Telemetry

@fractalcat @afcowie @christian-marie 

See also https://github.com/anchor/vaultaire-common/pull/23

Telemetry:

 * profiler thread associated with a worker (reader/writer/contents) daemon
 * read/write operations report their stats to the profiler thread via internal STM bounded queue
 * profiler aggregates stat reports (i.e. calculate the sum/mean/median) and publishes the results to broker
 * client subscribes to the broker for telemetric reports

Unrelated changes:

 * use Network.URI for broker strings
 * ``DaemonArgs`` sum type to avoid passing around shutdown signal + ceph data + something else

In general, reporting stats such as the time taken to handle a read request is a simple matter of wrapping the action: ``profileTime ReaderRequestLatency origin act``
It's Control.Monad.State.Strict, so it should be fine, I think