Made Window::Window partially configurable through defining macro constants.
Documentation.
Renamed "include/utils/gl.h" to "*/gl.hpp" for increased consistency.
State machines use shared_ptr instead of unique_ptr.
Added asserts to ensure nullptr is never used as a StateMachine State.
Split up Spatial.hpp into one file for each primitive.