I think `Metric.oneshot` was a bit of a bad idea (it's confusing the metric which is a name and a way to get a value in this case) with the manager / connection (which is a way to publish a metric and a value). I'd rather not add fixing that to this PR though (or even to our short-term todo list). So what if we removed `oneshot_with_value` and made the base signature of `oneshot`:

```
def oneshot(self, manager_or_connection, **kw):
```

If value is `None`, we call `self.get_value(**kw)`, otherwise we use the passed in value. Then we call `self.publish_value(manager_or_connection, value)` (the equivalent of `.oneshot_with_value`) and the Django and Tx classes only need to override `.get_value` and `.publish_value`.

I guess this is a bit like just renaming `oneshot_with_value`  and changing it's signature a bit? Thoughts.