Added location and size change handlers
Fixed Xlib calls to `XData` calls
Wrote a method to test if desktops are visible.

This will help when figuring out how to handle a window in the change
handler, depending upon how its visibility changes.
Scheduled icon repositioning after the change loop.

This is managed by the variable
`ClientModelEvents::m_should_resposition_icons`, which is set to `true`
whenever an icon is added or removed.

Also, a reference to the application logger is now given to
`ClientModelEvents` as well.
Wrote utilities for the desktop change handlers.

These include (all in `ClientModelEvents`):

 - `create_new_icon` which simply creates a new `Icon*`.
 - `create_placeholder` which create and configures a placeholder
 window.
 - `start_resizing` and `start_moving` which do as their names suggest.
Removed `XData` manipulations from `XEvents`.

These changes ought to be in the `ClientModelEvents` class, since they
affect Xlib state directly without going through the `ClientModel`
first.
Wrote a few of the desktop change handlers.

Specifically, the desktop change dispatch function as well as the
handlers for:

- New clients
- Changes from a user desktop
- Changes from the 'all' desktop