New input configuration system [CR]

These classes are meant to improve abstraction of input. With them, it should be possible to retain 100% convenience of using the keyboard, while being able to fine-tune input layouts for other input methods(e.g. gamepad). They also make configuration easier, by adding the ability to easily add new input events by specifying a string name.

TODO:
- Key-combos(with keys reserved for combos, e.g. 'a)
- Multiple keys assigned to one action(alternatives rather than combos)
- System to reconfigure keys for the "current context" in-game(e.g. hit a special key in overmap view, get to redefine keys related to navigating overmap, can also serve as "help")