adding more util methods and javadoc to DateTimeService
add support for aggregating cache blocks in PastDataAggregator

If aggregation for a cache block (i.e., partition in metrics_cache) fails,
neither the partition nor the corresponding row in metrics_cache_index are
deleted. When a subsequent aggregation run is performed, PastDataAggregator
will retry those failed partitions. It can be assumed that all data for the
time slice is present in metrics_cache; therefore, we can pull data from
metrics_cache instead of raw_metrics and potentially reduce query and I/O
overhead.