[solvers] implement minsolve_linear_system.
[simplify] Improvements to ratsimpmodprime.

Namely:

- fix a bug where denominators would be dropped
- add a parameter quick, and use solve(.., minimal=True, quick=True)
- if quick is not True, collect all solutions of the minimal total degree (but
  differing individual degrees) and use minsolve_linear(quick=False) to find
  the best
- make staircase() much more efficient
[functions/elementary] Implement cosh(x+y) sinh(x+y) expansion.
[polys] Fix eject().

Note that the changes in densebasic are most easily tested through the
polytools wrapper classes.
[simplify] Start trigsimp_groebner.

This is a function which simplifies trigonometric and hyperbolic fraction using
the groebner basis based algorithm ratsimpmodprime.
[simplify/trigsimp_groebner] Implement polynomial simplification.

This is a faster, but less good version. Also speed up some tests.
Better integration of trigsimp_groebner with rest of trigsimp.
[simplify] Implement "deep" for trigsimp with groebner.
Merge branch 'master' into trisimp-merge

Conflicts:
	sympy/functions/elementary/hyperbolic.py
	sympy/polys/polytools.py
	sympy/simplify/simplify.py
	sympy/simplify/tests/test_simplify.py
	sympy/solvers/tests/test_solvers.py
[trigsimp_groebner] Add missing import, robustify tests.
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