avoid possible read-on-write from any in-place modification taking place to datapoints; in case of cached/indexed data points from DataPointCache for site, the points being returned by MeasureDefinition._indexed_datapoint() were persistent objects, this was bad.  We cast to dict if cached value is not None.  Furthermore, we fix an issue where an aggregate may include a dataset that has since been removed.