Prototype System class.

@moorepants, can add your tests to this branch? From this point I'll write code in a test-driven way. It'd be fun to continue to work on this together, but I'm also happy to do the coding and you can review afterwards (if you're busy, etc.).

- [ ] Edit Scene so that it takes in a System. @tarzzz ?
- [ ] Make KanesMethod and LagrangesMethod derive from a single abstract base class (ABC), perhaps MechanicsMethod. This ABC will be required to provide certain attributes. EDIT: Let's not do this now? [Jason: I'd wait on this too, it isn't necessary]
- [ ] Clean up documentation of System. I'm not sure what to put in the class docstring vs the constructor docstring vs the property docstrings. I am duplicating some information right now. @moorepants @tarzzz @jcrist ?
- [x] Write tests for constants, initial_conditions, ode_solver
- [ ] Finish tests for complex settings of the `specifieds`. @moorepants ?
- [ ] Rewrite specifieds to work with @moorepants ' existing code. @chrisdembia, @moorepants ?
- [ ] Finish testing of `generate_ode_function`, `integrate`. @moorepants?
- [ ] Ensure that this class is useful for @jcrist . @jcrist ?
- [x] Finish setters for constants, specifieds, initial_conditions, ode_solver @chrisdembia
- [ ] Test using the `constants`, `specifieds` and `initial-conditions` properties as dicts
- [ ] Rewrite so that generate_ode_function takes a system. This may take a lot of work, since right now System is what calls generate_ode_function.
Shouldn't we pass in a vector of times instead of a start and stop? Some people may want variable step outputs or to control the time step.