fix premature eval bug in Integral.doit()

- solves issue 2708 for inappropriate integral expansion
- Issue example: Integral(1/log(z)), (z, 2, 3)).doit()
- Extend AddWithLimits._eval_factor
- addes ExprWithLimits._eval_interval
- Include calls for .factor() in Integral.doit()
- Properly handle partially-calculated multiple integrals
- Add test_issue_2708() to test_integral.py
- Adjust old tests for syntatical variation under new method
Update test for premature integral expansion

- Now using 1/(a+z+log(z)) with is less likely to be defined
	in the future, but does not choke the integrator.
Merge pull request #2858 from zanzibar7/bug_premature_integral_expansion

Stop premature integral expansion described in #2708