Implemented InputController

InputController provides basic typed input handling
Merge remote-tracking branch 'origin/inputcontroller' into charactercontroller