Feature component framework

Check Physics::HandleEvents() to see how to use the component framework.

To create a component, component.hpp and registration.cpp must be edited. If an Initialize function is needed, it goes into component.cpp with a definition in component-templates.hpp