Add some design docs, and movement implementation.

* Add a uml diagram of the core classes
* Add an attempt to define the primary logic flow, and standardize State naming style
* Add Euler movement implementation
* Add RK4 integration movement implementation
* Rename InputEngine methods for continuous button or key checks into same name (fn overloading)
* Add isType templated method to State