[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.
fix merge conflicts