Hotkey interface implementation 

This partially fixes #1964 and #1893.
I managed to implement a workable interface for binding hotkeys. Although it is currently usable, there are some places where it could be improved:
- the settings only take effect after restarting the game
- the key names are sorted by length ( I have no idea why this happens, and could not find a fix)
- key combinations are not supported: the interface actually stores a the list of pressed keys, but I don't know how to set them, and combinations might create other problems as well
- there is currently no way of deleting bindings (only overwriting): I didn't know how to implement this; let me know if you have any suggestions