Don't clip regions to visible coords

Bounding regions are clipped to their parents now, and the root
window is the size of the server.
Remove some unnecessary generalism
Clip to the intersection of the two regions

If we have a new region that's larger than the old region, we
shouldn't copy the junk outside the old region over.
Clean up code
Merge the front-buffer copying function into wrapWindowChange
Fix redraw issues when dragging off the screen to the left

This really isn't really what I wanted to do, as the shape could be
really small, and we'd be copying more than we need to, but
there's no correctness issue because of the clips, so I guess it's
OK.
Remove unnecessary if statement
Remove unnecessary parameter
Implement parentWindow to spec

We need to unmap/remap the window. This is sort of inefficient
because we're repainting the entire window instead of copying
the area, but that's a problem for another day.
Remove a few more leftover params
Reintroduce ImageWindow
Require createWindow to take geometry

This matches the X11 protocol somewhat, and makes it much easier
for clients to know their size, rather than assuming it's 1x1.
Make clients pass back an explicit damage to clear

Previously, we had race conditions where clients were getting
a sequence like:

Expose
ConfigureNotify
Expose

For a fake terminal client that draws to its known width/height,
not the image width/height, when processing the first event,
it would draw to its old width/height, clear all damage, and then
update its width/height, and then the second Expose would
fizzle out since the damage region is empty.
Clean up HTML a bit
Prevent errors when the cursor goes out of bounds

For some reason, the input area of the container can be larger
than the container itself, even if dev tools disagrees.

Just clamp to the bounds of the stage, to ensure it never goes out.