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.
product should return 1 if term=1, fixes #8301
Sum evalf of non rational term
doit() keeps unevaluated Product, if _eval_product returned nan
Change version to 0.7.6.rc1
Add Duane Nykamp to AUTHORS/aboutus/mailmap. Welcome to SymPy!
Use io.open in test_args

This lets it work even in non-Unicode environments
Fix sympy.physics.vector pretty tests in non-Unicode environments

The tests needed to be organized like the normal pretty printing tests to
explicitly test ASCII and Unicode output, regardless of the environment.

Also fix the printing code for dyadic to properly print ASCII strings when
use_unicode is False.

You can test an ASCII-only environment in Unix by setting LANG=C when testing,
like

LANG=C bin/test print
Fix IPython printing tests

They were not testing all order possibilities of a dictionary, and a test was
assuming that the output would be Unicode, when it really depended on the
encoding of the environment.
Try to reuse printers when possible

This should hopefully make things more amenable to subclassing (although the
whole design here is not ideal).
Make printing tests pass in a very narrow terminal

I had to punt on the IPython printing tests because I don't know how to make
IPython ignore the terminal width. I also don't know how to test this other
than by making a terminal with a very small window.  Assumedly one could test
it by setting some environment variables, but I'm not sure what those would be
(setting COLUMNS did not work).
Missing import in Python 3
Fix vector printing tests in ASCII

I actually didn't fix them, but the tests pass. I had to punt on this one,
because the printer uses some awful hacks, and I don't really know how it is
supposed to work. So now vector code will raise NotImplementedError when ASCII
pretty printed.

Also clean up a bit of bad code that was reassigning self and made it slightly
less confusing.
Test printing in an ASCII-only environment in Travis
Forgot test_ in test function name
reposition Leonid Blouvshtein in AUTHORS/aboutus
Retroactively add Peter Brady to AUTHORS/aboutus. Welcome to SymPy!
Retroactively add Clemens Novak to AUTHORS/aboutus. Welcome to SymPy!