Add a publish command
Aggressive caching for associative aggregates

When calling aggregate() with an associative aggregate (min, max, sum,
mean, count) we can break the operation into smaller steps and then
combine the result.

Internally, we call aggregate_series() so that the time series cache
can be utilised. This means that multiple calls to aggregate() with
overlapping date ranges can reuse the cached results of the portions
that overlap. This reduces the amount of data that needs to be read
from the database.
0.2.0