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]~~
- [x] Clean up docstrings 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
- [x] Finish tests for complex settings of the `specifieds`. @moorepants ?
- [x] Rewrite specifieds to work with the new generate_ode_func args. @chrisdembia, @moorepants ?
- [x] 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
- [x] 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.~~
- [x] Make nice sphinx docs.
- [ ] Convert examples to use System.
- [ ] ~~Revert `generate_ode_function` to original call signature and move the specified and constants dict parsing to the System class.~~
- [ ] All models in codegen.tests.models should return Systems
I don't. If the user is using the symbols/values format, they are in control of the order of symbols. See https://github.com/pydy/pydy/pull/81/files#diff-105304ef1b8479ef4d5d9e41b786cc34R383