Torification and factorization of birational maps