Update `Daemon` with start, stop and halt

This updates the `Daemon` with its start, stop and halt behavior.
When started, it will now build a `DatWorkerPool` that will be
responsible for handing work off to multiple threads. When stopped
the daemon will shutdown the worker pool using its configured
timeout. This allows controller a daemon This doesn't include the
logic for pulling jobs out of redis and adding them to the worker
pool, it is just the start, stop and halt behavior.