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.
"I don't really like how that looks" is not how coding style conventions work.

That said, not sure if we actually have a rule about this. If we don't, then "whatever", I guess. @bunnei?