[Mac] Correctly shutdown HID input driver
[OpenTK] Correctly reinitialize platform factory
[Mac] Added CFRetain binding
[Mac] Retain CFRunLoop while it is in use
[Mac] Close CocoaNativeWindow in Dispose()

Also fix various memory management issues regarding the `MouseCursor`
and `Icon` properties.
[Mac] Added objc_disposeClassPair binding
[Mac] Do not use Autorelease pool
[Mac] CursorVisible should only apply when changed

This fixes an issue where `NativeWindow.Dispose()` would move the mouse
cursor.
[OpenTK] Re-add static Factory constructor

There are static methods that rely on `OpenTK.Platform.Factory` having
a static constructor. We need to fix those first, before we can remove
this constructor.
[Mac] More defensive programming

CocoaNativeWindow now checks for and reports failures to allocate
resources in its constructor. Additionally, it no longer calls UI
methods in the finalizer thread, as those methods will crash on Cocoa.
[OpenTK] Additional constructor and doc cleanup
[Mac] Do not execute run loop prematurely

Fixes a potential crash when destroying and recreating OpenTK.Toolkit.
[OpenTK] Add allocated resource registry
[Mac] Register platform resources for disposal
[OpenTK] Reduce duplication in GraphicsContextBase

Inheritors now take advantage of base class functionality to avoid
duplicating finalizers and warning messages.
[Mac] Store a reference to callback delegates

This avoids a potential crashes by the GC reclaiming the delegates
prematurely.
[Mac] Do not set callback delegates to null

This is done automatically by the GC once they are eligible for
collection.
[OpenTK] Added IPlatformFactory.RegisterResource()
[OpenTK] Register GraphicsContext and NativeWindow
[Mac] Ensure Cocoa bindings are initialized first