Email Aggregation

Rather than sending out an e-mail per activity, mails will be aggregated with other emails that have ocurred recently.

This work adds an `emailPreference` field for each user where they can select how they want their email delivered.
 * Never
 * Daily
 * Immediate (with a 10 minute delay to let it aggregate with other activities in those 10 minutes)

The emails are now also internationalizable by virtue of re-using the 3akai-ux template macro's and UI bundles.
Push out email based on the user's timezone
Merged master into simong/emailaggregation
Merged oaeproject/master into emailaggregation
(Email aggregation) Review follow-up

* When marking your notifications as read, no emails will be sent out for previous activities
* Spliced of activity/email bucketing logic into it's own module
* Various clean-up + added tests
* Exposed activity view adapter through the UI api
* Cleaner UI template util functions
Add endpoints to create user via global admin, check user ID existance via global admin, get /api/download/signed via global admin, update a user's basic profile as a global admin, get a user's basic profile as a global admin
Move /api/user/:id after /api/user/:id/import in rest.user.js
Update deprecated function names
bugfix reset aggregation

When there were no active aggregation keys (for example, when you've just
reset your aggregation) we would try to delete nothing, which triggered
an error from Redis.
Add tests for added user management endpoints
email template fix for thumbnails
(EmailAggregation) - Added a simple aggregator for email activities
Configurable `emailPreference` tenant default
Merge origin/master and fix conflicts
Marking notifications should only clear the activity stream
when the user’s email preference is set to immediate.
Take the tenant’s default timezone into account when a user hasn’t configured one
Added the email hashing back in for activity emails
Removed user.timezone property
Merge oaeproject/master into emailaggregation
Initial implementation of email designs