Reworked our input system.

Implemented abstraction layer for any kind of InputListener.