Polynomial remainder sequences, gcd, and resultant

Documentation on the computation of gcd's and resultant's of
polynomials via remainder sequences, with emphasis on subresultants.
Computing resultant with subresultants

Reordered the loop in the computation of subresultants to include
one more scalar subresultant, namely, the resultant. Another loop
in the resultant function can then be omitted.

Notes:

1. The subresultants and the resultant of the pair `(f,g)` as computed
   are actually those of the pair `(g,f)` if `\deg(f) < \deg(g)`.
   This may have effect on the signs, but that is harmless in general
   when the resultant is only used for eliminating a variable.
   I have not changed this to save some time in the computation.
   Correct signs may be restored afterwards if that is necessary.

2. The resultant of `(f,0)` is zero indicating that `f` and `0` have
   common roots, namely every root of `f`. However, if `f` is a
   non-zero constant, it has no roots. In this case the resultant
   should be different from zero -- in fact one, by convention.
   I have not changed this as it would break the test in
   test_euclidtools.py.
integrals: An amendment to spde()

The iterative version of spde() currently assumes that the
coefficient  a  of  Dp  were invariant in the loop, in which
case the values of the multiplier  alpha  are powers of  a.
Otherwise the offset  beta  of the solution will be incorrect.

I have added two test cases where  a  is not invariant.
In the general case,  alpha  can be used instead of a power of  a
to construct the correct value of  beta.
Don't force push to sympy_doc
Deploy the docs as part of the script phase in Travis

This has several advantages:

- If it fails, the build will fail.
- We do not need to rebuild the docs. They are already built from the test
that builds the docs.
- We do not arbitrarily only deploy when the first test in the matrix is
finished. The deploying is now tied to the docs building matrix.
Fix bash syntax in .travis.yml
Fix name of deploy script in .travis.yml
Generalize physics.quantum.OuterProduct so that it can handle scale kets/bras and sums of kets and bras
Unit tests for updated OuterProduct in the physics.quantum module
Make deduce_alpha_implications() handle facts with Not

Previously implications like a -> !b, c -> b were not handled correctly to
deduce things like a -> !c. Now every fact a -> b adds the implication !b ->
!a, and deductions of the above for, as well as a -> b, !a -> c => !b -> c are
added.

The function still does not properly handle nested implications. That fix is
coming in a later commit.

This also changes rules_2prereq to add prerequisites in both directions (as
the docstring suggests). That is, if a -> b, a is a prerequisite of b and b is
a prerequisite of a.  This is because if a is true then b is true, and if b is
false then a is false.  This function takes its input from
deduce_alpha_implications, so making this change was necessary.
Use Warshall's transitive closure algorithm in deduce_alpha_implications

Unlike the existing algorithm, this correctly handles implications of
arbitrary depth, like a -> b, b -> c, c -> d, d -> e ==> a -> e.  It also
simplifies the algorithm quite a bit.
Evaluate dif for inequalities only if arguments are reals

fixes #8288
Old assumptions: replace !finite == infinite with infinite -> !finite

The motivation here is that there might be things that are neither finite nor
infinite, i.e., non-numbers. For example, I would expect anything with
commutative=False to be neither finite nor infinite.

This only changes the fact in assumptions.py, and does not fix any of the
remaining code in SymPy to match it.
Add Float._eval_is_infinite

!finite does not imply infinite, so this is needed to make
Float('+inf').is_infinite == True.
Update facts on oo, -oo, and zoo

Only add the facts that are necessary (namely, infinite, and positive and
negative for oo and -oo resp.). The other facts are deduced automatically by
the assumptions system.
Fix a test in test assumptions

!finite does not imply infinite, so the tests were changed to use
infinite=True instead of finite=False (so that the deductions of, e.g.,
(positive=True, infinite=True) + (finite=True) == (positive=True) still
work).
product should return 1 if term=1, fixes #8301
Merge branch 'master' into old-assump-modest
Fix tests
Raise NotImplementedError in _eval_interval if the limit returns a Limit

This causes tests from issue #4199 to continue to return an unevaluated
Integral instead of a nonsense result with Limit objects.