Implemented focus cycling.

- Wrote `FocusCycle`, a class which iterates the list of visible
windows.
 - Interspersed calls to `ClientModelEvents::update_focus_cycle`
 whenever the list of visible windows is changed, so that way the focus
 cycle list can be updated.
 - Added a CYCLE_FOCUS keyboard action, as well as an entry in the
 configuration file for it. In addition, XEvents binds CYCLE_FOCUS in
 its constructor, with the other actions.
 - Added focus cycling to `XEvents::handle_keypress`.
 - Added a test to see if a window is mapped. This is used by
 `ClientModelEvents::update_focus_cycle` to ensure that it doesn't
 include invisible windows in the cycle list.