Implemented the sender worker for metrics

Implemented a sender worker that will send metrics to a given service
This is one of those cases where I think we're hurting ourselves by depending on all the underlying machinery in a "unit" test. I think the layers of unit tests should *ideally* be something like:

  * test that state does the right thing when handed a MetricSender
  * use a mocked-out state to test that the apiserver calls state, with an appropriate MetricSender, when called
  * use a mocked-out server to test that the client code sends the right stuff over the wire to the apiserver
  * use mocked-out client code to test that the worker uses it as expected
  * use mocked-out worker registration/invocation logic to check the right worker gets started in the right circumstances on the agent

...and while this does leave plenty of gaps through which implementation bugs could slip -- so we do *also* want a full-stack test that verifies things work right -- it means that we get testing, at each layer, that's expressible purely in terms understood by that layer already, IYSWIM.

Now, this is too much to ask for in one CL, for sure. But if we can just mock out the client code to test the worker in this PR, we create a nice healthy seam that we can hope will teach others to do the same where they can; and we can still use slightly less clean tests at the other layers, eg:

  * test state with a mock MetricSender as above
  * test apiserver against a real state, to verify indirectly that it passes a sensible MetricSender in when invoked
  * test api against a real state, even, no need to get carried away
  * test the worker code against a mock api client
  * wrt jujud worker registration... well, that's not for this PR, at least ;)