Remove unnecessary use of ClientManager.

Some sub-managers automatically got access to the
owning ClientManager when they didn't need it. I've
removed the parameter in the constructor for the
classes in which it was unnecessary.
Added some constants related to mouse buttons.
Added the shell to the list of shared variables.
Removed the client code.

I finished everything, but I disliked the outcome - it was too ugly, and
had many bugs in the way that clients shifted between states. So, I'm
redoing how clients are managed in the hope of producing a better design.
Did some Makefile refactoring:

 - Separated the C++ compiler flags and the linker flags
 - Moved all the object files out of the compilation steps and into the
   linker phase
A fairly drastic reorganization.

All of the things which were previously under their own Managers have
now been brought in under the ClientManager umbrella. However, they
have been split into separate compilation units to make it easier to
filter out compiler errors and such.
Added a function to flip the sticky flag of a client.
ClientManager::create now initializes layer and desktop data for clients.
Added the layer manager code to the repository.

I forgot to do this a few commits ago.
Added some sanity checks.

They make sure that, whenever a user orders an action on a client
that is _not_ a state transition, that the window involved is actually
a client.
Added Doxygen file header.
Implemented client actions in the ClientManager.
Added some extra Makefile targets to check for compilation errors.

`make check` now compiles everything, without linking, to check for
compiler errors.
Ugh. A really big commit - I'll remember not do this kind of thing again.

I managed to get SmallWM to compile and almost everything seems to work,
except for icons. For some reason, they won't 'uniconify' when the icon
itself is clicked.