Start of optimizations of mechanics code

- Removed `_mat_mul_inv` in favor of LUsolve. This provides a
  significant speed boost.

- Added `msubs` function. This is a custom `subs` that replaces the old
  `_subs_keep_derivs` function, but does its work in only one pass,
  while providing checking for `nan` and `oo` in the expression tree.
Fixes to KanesMethod.to_linearizer

Small change to utilize existing KanesMethod attributes in forming the
general form representation. Also refactored __init__ of Linearizer to
pull slow code out into separate function to be run on first call to
Linearizer.linearize. This trades faster object creation for a slower
first method call.
Revert to using msubs in KM.to_linearizer

It's slightly slower to partition with msubs than using KM._f_d
and KM._k_d, but results in a significantly smaller expression
size - yielding overall gains.
Bugfix in msubs

Added missing call to _recurser in _smart_subs.
Start of refactoring of KanesMethod Class

Refactoring to improve readability, remove dead code, and improve
efficiency. What's done so far:

- __init__ (and all _initialize* methods) rewritten in more readable
  style.

- Some dead code/unused attribuetes removed

- Internal state is no kept in matrices, not lists.
Continuation of KanesMethod Refactor

- Cleaned up code to be more readable, no major changes in algorithms.

- Added option to msubs to accept several dicts as *args.
Continuing work on KanesMethod refactoring

- Pulled out _find_dynamicsymbols into a separate function
- Deleted unused _othersymbols function
- Refactored out _partial_derivatives class method
- Some code cleanup
- Added tests for find_dynamicsymbols and msubs
Added docs for new linearization methods

Added doc page for linearization methods in physics/mechanics.
Added api for linearize
Merge branch 'master' into MechanicsImprovements

Conflicts:
	sympy/physics/mechanics/functions.py
	sympy/physics/mechanics/kane.py
	sympy/physics/mechanics/lagrange.py
Refactor of LagrangesMethod

Code cleanup of the LagrangesMethod class

- Removed dead code
- Refactored to be more efficient in places
- Moved a common inner loop between KanesMethod and LagrangesMethod
  to the functions file. Function is _f_list_parser, and is internal
  only
Merge branch 'new_docs' into MechanicsDocumentation
Fixes to msubs to make it work in Python2

Also fixed docstrings to pass doctests.
Documentation updates for new functionality

Added documentation for linearization methods, and all assorted changes
that occurred along with them.
Finishing touches on mechanics doc updates

- Updates to docstrings to render well in sphinx docs
- Added prose walkthrough of example sections
- Spelling and grammar fixes
Bugfix in msubs & Python2.6 compat issue

- Fixed bug in _fraction_decomp, wasn't finding fractions with power
  denominators.
- Changed literal set to set([*]) form used in Python2.6
Return TypeError for comparisons, if self or other is not real

Fix for PR #7792 which made `x < I` different from `I < x`.  Add tests.
Fix to doc makefile, add examples to index

Needed to add new *.svg files to list in makefile so the pdf build won't
fail.
Merge pull request #7815 from cbm755/complex_ineq

Return TypeError for comparisons, if self or other is not real
blacklist mpmath tests