[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.
[Input] Added structures for joystick hat input
[Input] Added JoystickHatState structure
[Input] Do not use a bitfield for hat position

Using a bitfield does not save storage space in this case, and also
stops pattern matching from working (switch() statement in C# or match
… with expressions in F#.)
[Input] Added hat state to JoystickState
[SDL2] Implemented support for hat state
[Input] Added JoystickCapabilities.HatCount
[Mac] Implemented JoystickHat support
[Input] Fixed compilation error
[Input] Fixed SetButton index check
[Win] Cache WinMM joystick capabilities
[Win] Query WinMM joysticks on devicechange event
[Win] Do not create second WinMMJoystick instance
Merge branch 'joyhat' into develop
Merge branch 'develop'
Remove non-breaking space.

Causes the build on Ubuntu to fail.
Merge pull request #58 from Frassle/develop

Replace non-breaking space.
[OpenTK] Make VB.Net overload resolution happy

GLHelper.cs contains a number of overloads that cannot be resolved by
VB.Net. We cannot remove them, as that will break
backward-compatibility, but we can hide them by moving them after the
autogenerated overloads in GL.cs.

Terrible hack, but it appears to work.

Issue originally reported at http://www.opentk.com/node/3554 as "OpenTK
1.1, VB.net and ambiguous functions."
[Win] Do not raise KeyPress for control chars

This matches the documented behavior of the GameWindow.KeyPress event.
[Doc] Updated documentation for release