Port the application to OS X using Qt and Cocoa, without using X11.

 * Calling XFixesGetCursorImage on OS X produces a stock arrow cursor
   centered in the screen.  (i.e. It's not really implemented.)
   Instead, use [NSCursor currentScreenCursor] to get the cursor's image
   and hotspot location.

 * Use [NSEvent mouseLocation] instead of XFixesGetCursorImage.

 * Use [NSEvent modifierFlags] to check the CAPSLOCK state.

I'm not sure this code works if the user has multiple screens, or if one
of the screens is a Retina display.  I don't have access to a Retina
display.
Remove Objective-C++ code and instead use a wrapper to ObjC APIs.

 * qmake does not pass C++ flags when compiling ObjC++, so C++ and
   ObjC++ object files are not ABI compatible.
Update the cursor position and image atomically.

 * This bug was very noticeable when I was testing the OS X "no cursor"
   code path.  We were updating the image first, then the position, so
   when the cursor disappeared, I saw the old cursor jump to the
   top-left of the player before disappearing.  Now, whenever the cursor
   image changes, we clear the cursor canvas, move it, then draw the new
   image.

 * Another case that could have flickered:  suppose the mouse isn't
   moved, but the cursor changes from, say, an arrow to an spinning
   ball.  The hotspot changes, so the image needs to be moved.
Fix a performance bug introduced during the ObjC++ rewriting.
Add two caveats.