Fixed desktop changes.

Previously, changing the current desktop would not change which windows
were visible. Now, the desktop change handler correctly maps/unmaps
windows.
Fixed a bug when remapping existing clients.

Although the MapNotify handler correctly detected pre-existing clients
and handled them appropriately, it continued and applied the client's
class actions again. Now, the pre-existing client handling code exits
the function to avoid repeating the client actions.
Changed how the focus is reverted.

When the input focus is set to None, it causes grabbed keys to be
ignored, preventing certain window manager actions. Now, if the input
focus is set to None, XData instead sets the focus to the root window so
that those grabbed keys can be used again.
Moved the termination check to the end of XEvents::step.

This allows SmallWM to exit as soon as the WM_EXIT keybinding is used,
instead of having to wait for another event.