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.
any reason to use self._q instead of q defined 3 lines above?