[Win] Faster WinMM GetCapabilities() and GetState()

joyGetDevCaps() is an extremely slow call that allocates memory.
WinMMJoystick is now caching its results for a significant speedup in
Joystick.GetCapabilities() and GetState().

The cache is updated whenever a joystick device is removed. WIP to
handle device added notifications.
[Win] Cache WinMM joystick capabilities
[Win] Query WinMM joysticks on devicechange event
[Win] Do not create second WinMMJoystick instance