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