Linearize class

This is a rewrite of the linearization methods in physics/mechanics to be more general. At this point, all previous functionality is supported, with a more modular structure. This pull request includes:

- A `Linearizer` class:
Holds the system in the generalized form, performs the actual linearization with the `linearize` class method.

- A `to_linearizer` method for the `KanesMethod` class:
This returns an initialized instance of `Linearizer`

- A `linearize` method for the `KanesMethod` class:
This creates a `Linearizer` instance, calls the `linearize` method, and returns the result in one step.

Tests have been created for the new functions, and the old tests have been updated to use them.
Keep in mind that `simplify` tries many different types of simplifications and then chooses the "shortest" result. It may be the case that multibody problems have a general forms and patterns that make most sense to try and simplify. For example `trigsimp` is a very likely useful simplification for any 2 or 3 D problems. I'd give a warning about this kwarg, as it may be fine for very simple systems, but this will be bad for anything that is reasonably big.