add TR17 and modify futrig
TR12i modifications: factoring and correction
further futrig tweaks; method=fu method=futrig supported
enable extraction of -1 in _keep_coeff
debug handles args and kwargs
add TR22 to fu.py
factor_terms can remove negative sign or not
TR0 change; futrig adjustments to align output with trigsimp

In all expressions, now, futrig gives an expression that is shorter
(in terms of str length) than trigsimp.
add docstring to trigsimp about compare, fu and futrig
exprtools cleanup
replace old trigsimp code with call to futrig

- also, trigsimp will always operate in a deep fashion so that
  keyword is now ignored
- there is no more caching of the results
- tests related to assumptions were removed since the patterns that
  were being tested were removed and those assumptions are part of
  the new Fu-like transforms.
- test that have a slightly new form were modified
- as_trig is now hyper_as_trig (which will help if someone is looking
  for a function related to hyperbolic functions)
handle with care Pow and rational expressions during simplification

The tests in Wester point out that simplification should
give priority to handling the denominator first and not
allow a term to factor out that would then change a zero
there into a non-zero term. e.g. getting (after simplification)
cos(x)**2 + sin(x)**2 - 1 over the same expression does
not make it 1: it is 0/0, nan.

The same issue exists when simplifying a Pow: the base should
be handled first to see if it becomes 0 else something like the
expr.py doctest, z(x)**(x + 1) where z(x) will simplify to zero
might become zero: z(x)**x*z(x)**1 = z(x)**x*0 = 0. This actually
suggests a problem in Mul.flatten if a zero argument short circuits
to 0 overall without knowing if there is any term for which
its boundedness is not known (since unbounded*0 is nan).
trigsimp modifications

- In TR11 make sure that a Rational is being handled (i.e. avoid the number oo which does not
have a p or q attribute). This is something that
should be done SymPy-wide: whereever as_coeff_Mul
is being used with the use of .p or .q afterwords
on the extracted coefficient, use the rational=True
argument to as_coeff_Mul, e.g.

    c, m = e.as_coeff_Mul()  # use rational=True!
    ...
    if c.q == foo ...

- the use of cse was removed as this can lead to
  incorrect results (not just different results)
  e.g.

    eq=x*(n-1)-x*n
    trigsimp(eq, recursive=True) -> -x

- sympification is now used

- bottom_up was made a little more flexible in how
  it handles arguments

- futrig sympifies, too

- TR6 has to be used after TR11 in order to keep any
  introduced powers in terms of sin -- a test was
  added that will fail if this is removed.
use bottom_up for futrig

This makes the special handling of Pow and rational expressions
unecessary.
access old trigsimp by using keyword old=True
edit docstring in usympy
modify maxima test to not depend on trigsimp
simplify meijerint test
polys: Added dtype to PolyElement and FracElement
polys: Added compatibility APIs for gf_* functions