Digital user input and HID module implementation for PAD

These changes include:
* An implementation of HID module PAD emulation.
* A simple key mapping system which supports multiple devices and front-ends.
* The connections needed to route input from both GLFW and Qt.
It's subtle and not really important, but I consider "helper struct" to be a common expression describing structures which are introduced merely for simplifying other code, while "helpful struct" qualifies some structure as being "helpful" (without noting that this is in fact the only reason the struct exists). Guess that might be just me though.