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 works for plain arrays, given that they aren't implicitly converted to pointers somewhere. It seems like in this scenario the array isn't, so yeah that'd probably work.