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``
this ``defaultConfig`` is meant to be independent of the config file, I think, which means it will just use the default hostname "localhost".

I can do something like this:

- ``defaultConfig`` just uses the name "localhost-<pid>"
- if there's a broker specified, but no name, it will use "<broker>-<pid>"
- if there's a broker and a name specified, it will use "<name>" (or should it be "<broker>-<name>"?)