Removed all the currently untested code.

I really need to write something which is more testable, and provide a
better layer between SmallWM's internal logic and how it interacts with
X.
Created a skeleton for Sphinx documentation.
Added Sphinx-formatted documentation.

Also, I removed most of the derivatives of `Struct`, since I'm not sure
that I'll need them for the next phase.
Added another test case, to handle Structs with nonexistant arguments.
Fixed a couple of issues with the tests:

 - I restored `smallwm.utils` since `smallwm.config` needed it.
 - I fixed how layers are tested for in `test-config.py`
 - I fixed how layers are assigend in `smallwm.config` since they were
   renamed.
I fixed the documentation path used by Sphinx.
Fixed the docstrings which declare values.
Started working on the client data structure.
Wrote the layer handling methods.
Made a number of fixes which allow the layer tests to pass.

 - Fixing some minor syntax errors
 - Changing the parameter list on `ClientData.add_client` to only
   parameters which are used by that function.
Added to the `client_data` module, and the tests.

I wrote a few extra tests to make sure that desktop navigation works,
which is confirmed by some more tests in `test-clientdata.py`.

Also, `ClientData.remove_client` and `ClientData.is_client` were added
as well, and their tests also pass.

Finally, a new parameter was given to `smallwm.client_data.ChangeFocus`
denoting the previously focused window.
Change notifications now carry more information.

This should help reduce redundancy in the future when these
change notifications are being used.
Wrote the iconication routines.

There are some new tests as a result, and they all currently
pass.
Fixed how virtual desktops are handled.

Specifically, DESKTOP_INVISIBLE was removed (as it is obsolete) and
the other virtual desktops are now grouped in collections which
make them easier to use.
Added more consistent focus handling.

All of the functions which manipulate which windows are accessible
now modify the focus appropriate, and the tests that codify those
assumptions now pass.
Wrote initial support for moving windows into ClientData.

Note that this functionality is currently not covered by the unit
tests.