[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.
changed tan and cot expansion, eval, and rewrite

* added expand(trig=True) for tan(x+y), tan(n*x), cot(x+y), cot(n*x)
* call sin and cos now to eval tan,cot at rational multiples of pi
* provide .rewrite(pow) and .rewrite(sqrt) for tan and cot
* added tests for tan and cot expansions
* added tests for rewrite(pow) and rewrite(sqrt)
* fixed tests in geometry to avoid eval of tan
* fixed a test in pretty printing to avoid eval of tan(pi/5)
solve euler ordinary differential eqs in ode.py

* solve nth order linear homogeneous euler ODEs
* added hints, classifying code, and solving code
* added test function with a few examples
added trailing newline to test_ode.py
removed cruft print statement
rewrite of euler ode tests

* now use constant_renumber to avoid machine-specific fails
* fixed white-space issue (I hope)
improved tan and cot sum expansion formulas

* use symmetric polynomials
* sum formulas for tan and cot, implemented independently
* cleaned up rational*pi evaluation code
* removed I=sqrt(-1) import
* added test_tancot_rewrite_sqrt
* added tests for tan(x+y+z) and cot(x+y+z) expansion
* added test_tancot_rewrite_sqrt, with @slow decorator
* add slow decoration to test_trigonometry.py
Added new test for euler ode solver

* discovered a bug with the classifier
* added an example to test for this
mprovements to euler equation solver

* broader pattern matching rules
* add tests to verify broader pattern matching
* update hints test for new hint, under better matchings
fix quality and ode constant numbering bug
fix quality and ode constant numbering bug

- added test for real root in euler ode solver
- revert some tests in test_dsolve_options()
improvements to code quality, with better sympy use
first draft 1dSHO