Flesh out the functionality a lot

Hi,
This is a huge pull request. The goal was to flesh out the functionality overall. So, there are lots of changes throughout, fixing things, adding features and so on. Secondly, I aimed to at least meet the tiling functionality provided by dwm, and I sought to do it in Scheme as much as possible.

Here's an approximate list of the more notable changes (admittedly, some commits were fixing my own errors):

* All client arranging takes place in Scheme. This is done through proper hooks (map-client-hook, destroy-client-hook, etc)
* Scheme exceptions are handled a bit better (they're at least printed)
* Support destroying and unmapping clients
* Manipulate the client list: swap two clients, reverse all clients
* Slightly easier keybinding
* Better auto-tiling: grow/shrink master, horizontal tiling, fullscreen (monocle in dwm), customizable gap
* Window tagging a la dwm
* Flexible border drawing: customizable colors, multiple border colors, customizable border width, etc
* Handle launching programs with arguments

...and lots of little functions/changes here and there to support those new features.

The two big release blockers that remain are EWMH compliance and stacking/floating/mouse support. A couple little things that I forgot to add so far are being able to re-load your init file, manipulating your Scheme path (where Scheme scripts can be found), and using Autoconf/Automake for the build system.

I know this is a huge flood and I remember you said that you have a new job which is keeping you busy. If you no longer have time for nwm, would you mind if I formally fork it into a separate project and just run with it? If that were the case, you would obviously be welcome to come back to work on it any time (or tell me to F off :)