Don't pass simple POD types by reference.
Made RootWindow's SetActiveClientWindow take a reference.  Now the only way to set the active client to NULL is to remove it.
Made ClientWindows's SetRootWindow take a reference.
Added SetWindowVisibility to WindowManipulator.
Don't pass in a reference to a pointer.
Added framework for event handling in Default_WindowManager and defined behaviors for client addition and deletion.
Added visibility to Window.  Added state and transient-for to ClientWindow.
Added a few events and then added some necessary methods to WindowManipulator.
Implemented show request/hide event handlers.  Also renamed Add/RemoveClientWindow to Push/RemoveClientWindowOn/FromStack for less ambiguity.
Made the intersection area function more general.