Superclass Sum, Product, and Integral, revise Integral.subs()

- New classes ExprWithLimits, ExprWithIntLimits, and AddWithLimits
- Sum, Product, and Integral inherit from these new classes
- move Sum and Product reordering operations into classes
- new implementation of ExprWithLimits._eval_subs consistent across all subclasses
- introduce _eval_factor
- added _eval_expand and _eval_factor features for Sum and Integral
- revised tests and doc strings