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.
- [ ] Make KanesMethod and LagrangesMethod derive from a single abstract base class (ABC), perhaps MechanicsMethod. This ABC will be required to provide certain attributes.
- [ ] Document in Sphinx, README, etc.
That sounds like something more complicated that should be done outside the class. Suppose I have an iterable of symbols: `[a, b, c, d, e, f]`, and an iterable of functions `[f1, f2]`. `f1` generates the value for `a, b`, and `f2` generates for `c - f`. What if the code for `f1` changed to now return 3 things? Now you have an off by one error all symbols after `b`. I'm not sure how you can resolve this in a robust way with multiple returns from a single function. Unless you plan on dynamically calling these functions in a systematic manner during integration/simulation, I don't think this use is necessary. The user can still just as easily call the functions themselves, and generate the dictionary to pass to `System`.