begin fixed thread processing model

Instead of instantiating a new thread for each incoming http
request, keep a pool of threads and let them feed from a
shared request queue. New threads can be added (limited
to some maximum) as things get busy.
much fleshing out of thread pool model
drop scm_c_eval_string call("not-found")

if URL handler isn't found. This is hosing guile for some
reason. Do this eval once at init time and cache the result.
Also, set not-found handler to dump_request();

Maybe symbol defined in one (main) thread doesn't exist in
other threads.
redefine "responders" in add_thread() as list grows

shield threads from GC by keeping them in global list.
necessary?
chasing down apparent multi-thread race condition
use poll() instead of select()

After much wrangling, it appears the multi-thread race
condition may have been due to improper use of select(); i.e.
failing to check for signal interruptions. Use poll() anyway,
because it's nicer.
clean up after much experimentation and thrashing
mention multi-threading
wrap message logging in mutex

assure message atomicity