Simulator cleanup

Initial commits include code cleanup that fixes #63. Also flag a couple of TODOs for future improvements.

When the following tasks are completed, this resolves #65:
- [x] Make former `Simulation` classes into subclasses of `Simulator`
- [x] Rename `Simulator`=>`DynamicsEngine`; `OpenMMSimulation`=>`OpenMMEngine`; `ToySimulation`=>`ToyEngine`
- [x] Fix filenames to match `engine`
- [x] Redo API as decided in #65
- [x] Refactor so generically useful stuff is in `DynamicsEngine`, not its subclasses
- [x] Double check for any additional usage of what used to be `simulator.simulation`
- [x] Add tests for using `ToyEngine` to call functions in `DynamicsEngine`
- [x] Add tests for `OpenMMEngine`
- [x] Fix up ipynbs to use the refactored code

Still undone:
* Get `ToyEngine` to work properly with `Storage`. This requires figuring out how to handle units for the `ToyEngine`-based systems.