Improve constant simplification for dsolve

- [x] address 4 recommended changes
- [x] merge PR that was made against this branch
- [x] correct typo in commit message title (i between f and c) `6981265 call new constant simplifcation from odesimp`
- [x] merge corrections (or correct errors in test results)
- [x] squash the commit title "squash with last"

- Fixes constant-collision errors in dsolve for good
- revise tests for ode, cse, pde, and constantsimp
- Constant numbering starts with C1, unless specified otherwise
- Specific checks for common subexpression and linear simplifications
- lie_group method errors appear because of x = Symbol('x',real=True)
	We work around with x = Symbol('x'), which raises no errors.
- Extends cse (common subexpression elimination) to Piecewise,
	and does not rewrite Order terms
-  Poorly defined behavior of collect is causing problems internally
	which extra code is added to handle.
- Stop classifying some nonlinear ODEs as linear.
- allows `numered_symbols` to exclude some symbols
- `terms_gcd` handles Eq uniformly now