Initial work for getting live-reloadable configs

I haven't gone through making sure that all my assertions about the
thread-safety of the new config stuff is totally sane, but it seems
sound. Still left to do is adding a signal handler for HUP (or some
other mechanism to notify the system of a configuration reload).
Additionally, I still need to come up with a good way of addressing
removal of data sources. I will likely need to have a handle to a
"quit" signal that is changed when a datasource is removed; new data
source threads must be spawned when datasources are added, of course.

This commit changes the semantics of the configuration struct. No longer
a global, a pointer to the "current view" of the structure is provided
via a get_config() function. Those wishing to use the configuration
structure must call this function to get the configuration, and call
release_config() when they are done with it. (It is assumed that no
pointers obtained from get_config() are used in code executed
asynchronously between the get/release calls.)

When the configuration is parsed, it is done in a dynamically allocated
structure. It is atomically swapped into place (but there are no
ordering guarantees, so if multiple threads *were* to replace the
configuration at the same time, which configuration wins is unknown).
This is safe because the swap is atomic and the reference count is kept
at the base address pointed to by the structure. I'm pretty sure,
anyway. Famous last words.