A modest proposal for fixing old assumptions before the release

Here is a more modest version of https://github.com/sympy/sympy/pull/8134, which I can hopefully finish up soon so we can get a release out. That PR should still be finished, but I don't think we should block the release on it.

So far I have my improvement to the facts algorithm. The tests all pass. Travis times are pretty variable, but comparing https://travis-ci.org/asmeurer/sympy/builds/38447593 to https://travis-ci.org/sympy/sympy/builds/38807940 it seems as if this is no slower, and possibily even faster. 

I will also cherry-pick the fix for `finite -> !infinite`, as this is a new predicate and we should get the facts for it right the first time. I will also see if `complex -> finite` doesn't need too many fixes. The rest require too many fixes to finish in a reasonable amount of time (and anyway, I think it would be better to make all breaking assumptions changes in one release). 
On Mon, Oct 27, 2014 at 11:46:05AM -0700, Aaron Meurer wrote:
>    In sympy/core/expr.py:
> 
>  > @@ -735,6 +735,8 @@ def _eval_interval(self, x, a, b):
>  >                  A = limit(self, x, a)
>  >                  if A is S.NaN:
>  >                      return A
>  > +                if A.has(Limit):
> 
>    Do you know how the Limit pulled out some terms and converted to 0? Can
>    that still happen?

Sure.  See first two lines of the heuristics().