Common logic for processing time-based counts across different event backends.When doing time-based counting we want to do two things:
Backfill any missing intervals with 0 counts.
Update the start/end times that are emitted to match the beginning and
end of the intervals rather than having them reflect the true max/min
occurred time of the events themselves.