Use this.damageRegion instead of manual unioning

This makes the code cleaner.
Remove a few clears

These aren't needed.
Make sure to clean up another damaged region
Bail out on empty damaged regions earlier
Put isInterestedInEvent back into sendEvent

This will make the code for grab clients easier to write in the future.
As a side effect, it corrects grab client event delivery by only sending
them events they want rather than all events. Oops.
Correct ownerEvents grab semantics

It turns out that ownerEvents isn't just about events already selected
on the window, it's events related to the entire client, so if a client
has two windows, and grabs on window B with ownerEvents, events to
window A should still be delivered as they normally are.
Use valueUpdated for ServerWindow.changeAttributes
Move defineCursor into changeAttributes

This is where it is at the server level. I got tripped up because Xlib
is dumb, I guess.
Remove constructShapeRegion

It does nothing.
Make frame dispatch more specific

We want to add other frame buttons in here eventually...
Rearrange code slightly

This puts frame window creation with frame window creation.
Rearrange a bit more code

This puts a clear path for us to update the close button position,
without adding another sizeChanged branch.
Add a close button to the WM frame
Respect hasInput
Make some more fields private
Make even more fields private