[OpenTK] Added IPlatformFactory.RegisterResource()
[OpenTK] Register GraphicsContext and NativeWindow
[Mac] Ensure Cocoa bindings are initialized first
[Mac] Resource registration moved to the facades
[Mac]] Add NSApplication.IsUIThread property

This can be used to check whether it is safe to access UI components in
the calling thread.
[Mac] Only dispose context on UI thread
[Mac] Mark callback calling convention

Callbacks are now explicitly marked as unmanaged pointers with the
correct (platform-defined) calling convention. Exceptions raised inside
these callbacks are no longer allowed to escape into unmanaged code,
where they will crash the runtime.

Additionally, the window is now only closed on the UI thread, and only
if it is actually open.
[Mac] Explicitly close removed devices

Devices are now explicitly closed when they a DeviceRemoved event is
received. Additionally, exceptions are no longer allowed to escape into
unmanaged code, where they might crash the runtime.
[OpenTK] Dispose() now clear the list of resources
[OpenTK] Removed the finalizer in OpenTK.Toolkit

This resolves crashes related to the platform factory being reset while
resources are still live.
[Mac] Removed stored delegate list

The stored delegate list would store delegates indefinitely, causing a
memory leak. It is now the responsibility of each class to maintain
references to any callback functions it defines.
[Graphics] Implemented structural equality

GraphicsContexts are now considered equal if they store the same
context handle. Debugging information is also improved.