[#4397] Background timeline aggregation

Fires off background tasks to aggregate affected timelines after a new
activity is created. Multiple aggregations for the same node are
prevented from occuring concurrently. On-demand aggregation will still
happen if necessary (if a timeline is requested and it's aggregation
is stale) but should be rare.

Signed-off-by: Tim Van Steenburgh <tvansteenburgh@gmail.com>
6 files changed