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.
That would be nice to clean up the Scene constructor. However, I am not sure this is a good idea. Those two arguments are specific to how the visualization looks, and they have been useful for me before. We can consider this again down the line when System becomes bigger and potentially manages the viz info. But for now (this PR), System does not handle viz info.