[Mac] Add skeleton HID input implementation for joysticks
[Mac] Implement device added/removed events for joysticks
[Mac] Only add callbacks for recognized USB HID devices
[Input] Allow extending JoystickDevice<>
[Mac] Construct JoystickDevice when joysticks are connected
[Mac] Implemented necessary CFString methods
[Mac] Retrieve HID joystick name
[Mac] Implemented joystick device detection
[Input] Added JoystickAxis/Button.Last; added JoystickAxis.Axis10.

JoystickAxis/Button.Last is used internally to allocate the correct
amount of storage for joystick axes and buttons. JoystickAxis.Axis10 is
required to support the maximum number of axes available on Mac OS X.
[Mac] Implemented joystick axis movement
[Mac] Implemented joystick buttons
[Mac] Fixed DllEntryPointNotFound crash on device unplugging
[Mac] Don't let exceptions escape to unmanaged code
[Mac] Correctly unschedule HIDManager from run loop
[Mac] DllImport must be marked as extern
[Mac] Do not call CFRelease on HID properties

HID properties are callee-owned and should not be released by the
caller. Fixes crash (memory corruption) on device hot plugging.
[Examples] Draw device index for Joysticks and GamePads
[Mac] Connect devices to first available index
[Mac] Use out/ref parameters instead of unsafe pointers in bindings
[Mac] Calculate joystick Guid for USB devices