Began the rewrite by writing some core WM routines.

Previously these elements were mixed into smallwm.c, but the rewrite
separates out some of the initialization. Some other elements that were in
client.c (specifically icon positioning and focusing).
Wrote a table implementation.

Tables are essentially a hash table which are indexed via integers
(conveniently, most of the Xlib identifiers are actually integers).
Refactored out the string_to_long function into the util.c module.

This will allow it to be tested more easily.
Wrote tests for the table implementation and string_to_long.

string_to_long succeeds, but the table tests fail.
Made some fixes to the table implementation.

The tests now succeed.
Did some header file refactoring.

 - Moved all the structures (except table_t) to struct.h to more easily
   allow for functions which should be put in wm.c to be put there without
   causing circular reference.
 - Wrote the client_from_window_wm and add_client_wm routines in wm.c
 - Moved all the X11 headers into x11.h.
Wrote a few iconification routines.

Icons can now be placed and painted.
Added the event and icon structs.

Also changed the window manager state to include the XRandR event offset.
Added a screen field to the WM state structure.

This is for the convience of the iconifying function, which needs to
access that screen.
Wrote the iconifying and de-iconifying functions.
Minor code consistency issues:

  - Removed the limit on the width of an icon string, since the user
    can change that.
  - Changed a comparison with null to a negation
Wrote some of the simpler client movement routines.
Removed dimensions from the client information.

After rereading the original codebase, I found that the dimensions of a client are used around requests for size. Instead of keeping the size information, just use `XGetWindowAttributes` to get it as necessary.
Added the moving and resizing code in the client.
Added some basic event setup code for building the event tables.
Added some basic event constants.
Added a movement field to the smallwm_t structure.

This is to better handle moving and resizing of clients.
Added some of the basic X events.

This includes all the basic event types - the keyboard subhandlers are
still unwritten.
Removed the redundant client_from_window_wm and wrote the desktop switcher.
Corrected some numeric types in struct.h