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.
Added docstring to lambdified functions

If arguments have names, that is used. Otherwise the stack is inspected
to determine if the name can be inferred *with certainty*. If there is
more than one variable pointing to the object, then the name cannot be
determined with certainty, and 'arg_#', where '#' is the number of the
arg is used.
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.
Vector pretty print test fix. Fixes issue #7679.
pretty_symbology: Don't assume the output of U() is not None

U() returns None when unicodedata can't be imported. I'm not sure how to test
this because it's only reproducible if unicodedata from the standard library
can't be imported.  I suppose we could add a hook to test it. It won't be
straight-forward though because the key thing is to make sure it works
correctly at import time.

Fixes #8163.
Return Limit instance if limit function can't compute the limit

Before: PoleError exception was raised
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
CodePrinter: allow subclasses to easily override _print_NumberSymbol()

Instead of assigning `_print_Catalan = _print_NumberSymbol`, just
return `_print_NumberSymbol`.  That way, subclasses can redefine
`_print_NumberSymbol`.
Add OctaveCodePrinter

Printer for Octave/Matlab code.  Lots of work still to be done.
Codegen: Add Octave code generator

This is very early WIP.
Matrix: customizable symbols for start/end of rows in table()

No change in default behaviour but this allows more customizable
output by adding `rowstart` and `rowend` kwargs to the existing
`rowsep` and `colsep`.
OctaveCodePrinter: matrix output bit more Octave-style
OctaveCodeGen: sympy version in test
OctaveCodeGen: some things works, lots of tests cleaned up