Added a `resetAggregationForActivityStreams` to the activity aggregator

This allows you to halt activity aggregation for specific streams.

Each time an aggregate key for an activity stream is updated, we add the key in a sorted set of "active aggregate keys" for that stream.
Each time we insert a key in the set, we give it a rank of the current millis since epoch.
This allows us to easily remove aggregate keys that have expired.
The set itself also expires (maxExpiry seconds after the last time a key was inserted into it)
Resetting aggregation for a notification stream on marking notifications as read
Streamlined ActivityDAO's aggregate functions

* Refactored updateAggregateStatus into indexAggregateData and pass in the activity stream IDs
* Renamed delateAggregates into deleteAggregateData
Expanded the activity aggregation reset tests

Added some test code that will assert that an activity stream that holds
previously aggregated activities can be reset correctly
Resetting aggregation asynchronously when marking notifications as read

Aggregation for a notification stream is reset asynchronous from the API request.
An event `resetAggregation` has been added that indicates when a stream gets
its aggregation reset.
Merge branch 'master' into activity-aggregation-reset

* master:
  (Issue 732) Remove accidental timeout
  (Release 6.0.0) Remove shrinkwrap
  (Release 6.0.0) Bump version
  (Issue 732) Review followup
  (Issue 732) Add an email for group join notifications
  (Issue 732) Route group join notificiations to group managers
  Compressing tests log when uploading to S3
Aggregator reset follow-up

 * log errors when getting active aggregates
 * `activityStreamIds` rather than `activityStreams`
 * Use _.isEmpty where appropriate in the tests
Merge pull request #863 from simong/activity-aggregation-reset

Added a `resetAggregationForActivityStreams` to the activity aggregator