initial commit for multiple DInput devices.

allow multiple dinput devices but still block all dinput devices if an xinput device is present.

This still has some issues with devices not being able to be dynamically added or removed but
even many commercial games react to hot-plug DInput events. Also, the axis handling is not really
ideal yet but it works for now.

Also, all the static structures are not really ideal and if you prefer them to just be global to the
translation unit of `DinputDevice.cpp` I can re-arrange that. The instance counter is also rather janky.