Fix destroyWindow
Send errors to client asynchronously

This matches X's model and simplifies control flow considerably.

Errors are ignored by clients right now, but I might implement a simple
error trap.
Fizzle out requests that pass in a bad window ID
Fix redraws on window unmap

We shouldn't send events to the window that's unmapping; we need to send
events to the windows under the unmapping window.
Fix viewabilityChanged

Whoops
Fix the above region while the window is unmapped
Track the buttons that are down for passive grabs
Only support the left mouse button for moving the frame
Exclude children from our fake InvalidateWindow request

We don't have any X server semantics to match, so let's
just make up our own that we want. Maybe we should move
this to the client eventually.
Stop redrawing the terminal on focus changes
Make sure to include interior windows on map/unmap

Sigh
Repaint windows on background color changes
Remove an outdated and unused function
Remove a debug log
Don't error out on potential race conditions when moving the mouse

Since events and requests are sent asynchronously, it's possible to have
a ButtonPress and Motion queued before the client has processed them,
where the ButtonPress will drop the grab. We can't un-send protocol
events, and we don't want to take a sync grab, so just filter these out
on the client.

From my understanding, this is also the case in the real X11 case as
well, and clients just drop such events.
Damage windows when they become viewable

Not when they're mapped.
Don't send a context parameter that doesn't exist
Remove a useless comment
Separate the unshaped and shaped bounding regions
Use viewable instead of mapped in most places

viewable is most always what we want.