trigsimp mods

add a few more patterns and a function to bypass patterns that
need not be tested -- it's expensive to run match so this allows
the match to be skipped if it's the wrong type of pattern.

Also, the way noncommutatives is handled is changed: rather than
using nearly identical patterns, the relevant expression is split
into commutative and noncommutative parts. This yields slightly
faster run times.
move patterns to their own function

This allows the patterns to always be tested whenever changes are made
within simplify.py.
factor works on nc expressions
use separatevars with trigsimp
use separatevars judiciously

If one always uses separatevars, the runtime is almost twice as long for
test simplify.py.
term -> expr; solves issue 1676
use factoring on similar terms
use rewriting to see if expr becomes simpler

This isn't used unconditionally since the user probably doesn't want
the result rewritten in terms of exp. The result is only taken if all
the exp that were introduced are removed after factoring.
remove non-handling of numbers in trigsimp
use cacheit on _trigsimp
trigsimp cleanup

1) don't let the final rewriting (and factoring) change
expressions that don't have trig expressions in them

2) the rewriting uses the deep flag so it will not occur
within functions and other such objects which are deemed
"deep".
update gotchas.rst for passing expr