Feature/refactor factorizations
The merge replaces the existing factorization code by a cleaner and slightly faster (more than slightly for complicated cases). The basic idea is to first explode sums and then recompute the factorization (but only the factorization) instead of considering only the to-most three operands.