factor, expand, subs improvements to Sum

- introduce _eval_factor for recursive-calling
- added _eval_expand and _eval_factor features for Sum
- new implementation of Sum._eval_subs
- use C.Add and C.Mul instead of Add and Mul
- additions to test_sums_products.py