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 ?
- [ ] Write tests for constants, initial_conditions, ode_solver
- [ ] Finish tests for complex settings of the `specifieds`. @moorepants ?
- [ ] Finish testing of `generate_ode_function`, `integrate`. @moorepants?
- [ ] Ensure that this class is useful for @jcrist . @jcrist ?
- [ ] Finish setters for constants, specifieds, initial_conditions, ode_solver @chrisdembia
- [ ] Test using the `constants`, `specifieds` and `initial-conditions` properties as dicts
We can update generate_ode_function too with this I guess. I guess generate_ode_function could take a system as an argument now.

Right now the rhs function requires the specified to be in a certain form. This shows what it needs to be: https://github.com/pydy/pydy/blob/master/pydy/codegen/code.py#L441