Graceful shutdown of threaded daemons

Replumb the Vault binary so that each of its "components" fork into their own daemon threads. Resurrect the SIGINT and SIGTERM handling code from v1, setting an MVar used as a semaphore to direct graceful shutdown.

This is now working, but further work will be required: really, each daemonized component should have its own shutdown MVar, and each of them needs to communicate graceful shutdown back to main (or be timed-out).

Some of this will be cleaner when the utility tools are spliced away from the daemon running code. In any event, more of this will be abstracted as test cases will need to use the same setup logic here.

AfC