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.
IMO this doesn't really belong here. Sure, it's code that would now be duplicated across two places, but this seems to be a rather ill-designed way to merge common code and just makes things more complicated to deal with. But maybe that's just me.