[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
Updated Matrix4d.FromAxisAngle to mirror the Matrix4 version.
[GL] Added missing ActiveUniformType.FloatMat3x2 token
[GL] Fixed invalid IL instruction in Get*() and Delete*() functions
Merge pull request #56 from l3m/matrix4d-axis-angle

Updated Matrix4d.FromAxisAngle to mirror the Matrix4 version.
[GL][ES] Mark DebugProc* delegates as unmanaged function pointers

Calling convention is platform-dependent: stdcall on Windows, cdecl
elsewhere. This maps to CallingConvention.Winapi in .Net parlance.
[GL] Do not limit strings to StringBuilder.Capacity. Fixes issue #57

We let StringBuilder grow to fit the unmanaged string. This appears to
match the default CLR marshaling behavior, which was used in OpenTK 1.0.
Merge branch 'joyhat' into develop