IconInfo structure.
CreateIconIndirect function.
GetIconInfo function.
SetCursor function.
GetCursor function.
DestroyIcon function.
MouseCursor example.

Small example to show how the MouseCursor class can be used.
Partial implementation of Windows MouseCursor.

Very buggy, but starting to show results.
Copy cursor.png to output.
Don't hardcode cursor.png path.
Copy to correct offset.

Offset into image is y * stride, not y * bpp.
No need for named variable.
Respond to WM_SETCURSOR messages.

Calling SetCursor on mouse moves is not enough, we need to respond to
SETCURSOR messages. If we have a custom cursor we need to call SetCursor
and then NOT call DefWindowProc, otherwise we just call DefWindowProc
for the forms default cursor.
Xcursor types.
Create and Destroy functions for XcursorImage.
Change xcursor library name.
Make xcursor fields public.
Add XcursorImageLoadCursor function.
Custom cursors on X11.
Change bool to IntPtr.

WindowProc returns an IntPtr not a bool, so let Handle* functions return
IntPtr?. If they return a value we return that, if they return null we
call DefWindowProc and return the result from that.