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.
I tried various ways of simplifying without a call to `simplify` directly. `trigsimp(A)` was much slower than `simplify(A)`, although it resulted in the same form. Currently `simplify` doesn't seem to be that slow, especially with the reduced number of options coming from solving a system without all the `subs` calls. I'll add a warning in the docstring about using `simplify=True`, and default it to false.