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
doit() keeps unevaluated Product, if _eval_product returned nan
Corrected as_leading_term in sinh, tanh and coth

Replaced the output with x, x and 1/x respectively and added tests.
as_leading_term method of acosh and acoth corrected

Output changed to I*pi/2, tests added and similar tests
put together to save lines.
Add code quality test for self assignments (fixes #8362)
Code quality: don't assign to self (issue #8362)
Fix remaining self assignments
Fix py3-incompatible code
py3 fix for mailmap_update.py
Code quality: don't assign to cls (classmethod's)
8411: check that hypsum attains desired precision
Merge pull request #8456 from shivamvats/sinh

Corrected as_leading_term in hyperbolic functions (fixes #8455 )
Fix atan2(y, x) evaluation for x < 0 and real y

previously, it was assumed that y is nonnegative if y.is_negative
is not True
Merge pull request #8471 from smichr/summa

8411: check that hypsum attains desired precision
Merge pull request #8445 from skirpichev/8362-fix

Add code quality test for self assignments
Merge pull request #8092 from jksuom/spde

integrals: An amendment to spde()
Merge pull request #8473 from skirpichev/atan2-eval-fix

Fix atan2(y, x) evaluation for x < 0 and real y
Merge pull request #8304 from skirpichev/8301-fix

product should return 1 if term=1
8206: univariate_inequality solver watches for invalid solns