Mechanics improvements

Improvements to a pile of things in `sympy.physics.mechanics`. In order of importance:

- Addition of `msubs`: a specialized subs function for use on the large expressions in `mechanics`
- Pulled out common `find_dynamicsymbols` code into a function of that name. Finds all the dynamicsymbols in an expression. Optional `exclude` kwarg to ignore certain symbols.
- Speed improvements to all `Linearizer` and related methods. Runs approximately twice as fast now.
- Refactor of `KanesMethod` and `LagrangesMethod`

The refactoring was mainly to:
- Remove dead code (there was some in both)
- Improve readability
- Make some code more pythonic
- Improve efficiency.

The overall useage of each class is the same, no user facing changes.
small typo: "exclude must be iterable". Python uses iterable as a verb, rather than a noun,(as observed in errors in other core modules)