Set number of workers via an option

Rather than a mandatory argument, use a command line option if you
wish to set the number of workers. Defaults to the number of
capabilities currently set in the runtime.
Initial refactoring to use a single writer thread
Use same shared lock for updateContents
Remove old code
Concentrate Chans and MVars into single data type
Use newtype wrapper for Label
Add strictness annotations to core types
Move ingestd code to IngestDaemon

Cosmetic change, but allows ctsgs to work again.
Pull pure code from writer thread  up to worker

Front load all bucket related processing up to the worker threads, rather than
having the bulk of it happening in the writer.

Switch back to blaze-builder's ByteString Builder; the one in
bytestring isn't ready yet, per haskell-cafe.

Lay groundwork to cache the source hashes.
Use cache of SourceDict hashes in Directory

Rename Contents to Directory. Rename Channels to Mutexes.

Add Directory to Mutexes.

Only update shared Directory object after it has been written to disk.