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.
http://stackoverflow.com/questions/6114067/how-to-emulate-c-array-initialization-int-arr-e1-e2-e3-behaviou seems to have `make_array` functions that work on C++11, but overall it's a really hacky solution IMO.

-1 for C++

Can't decide whether it'd still be worth it to use `std::array` given that you'd need to explicitly state the number of elements even while using an initialization list.