Move expose processing to a separate utility

So we can use it from the calculator / WM
wm: Use ExposeHandler
Don't translate the region which we don't use

(and aren't supposed to touch)
Don't copy the exposed region

We don't actually use it in any place we call exposeRegion.
Make drawBackground simpler
Move some code around
Fix canDrawable
Call exposeWindow on all viewability changes

Not just during unmaps
Don't send exposes for background color changes

I know this seems weird, but it's actually spec'd behavior.
Fix indentation
wm: Add explicit invalidateWindow requests

Changing the background color just isn't enough anymore.
Send ConfigureNotify before the Expose events

This is server spec'd behavior if I'm reading it right (it's ambiguous
though)
and it fixes the line on the panel not showing up at first.
Only relayout if the root window changes width
Only configure window properties that have actually changed
Debounce resize events in the demo
Fix stacking modes

The event doesn't have the proper properties, so just delete stuff from
props
if it hasn't changed.
Change the menu button background on click