Bug 1030996 - Add in tool notifications

- When a Task becomes unavailable (e.g., by expiring or being marked as a draft),
  find all attempts for the Task and mark them as requiring notification
- Using middleware, if an attempt for the current user is marked as `requires_notification`, display a modal message
  informing them that their open task was closed
Merge pull request #155 from bobsilverberg/notifications

Bug 1030996 - Add in tool notifications
Bug 1033475 - Allow user to configure email preferences from their profile# This is a combination of 4 commits.
Update User Profile edit screen to allow email preference

Change OneAndDoneUserManager.get_query_set() to from select_related to prefetch_related due to https://code.djangoproject.com/ticket/15040

Add migtarion

Hide user email from admins if they have not consented to receive email

Don't send email address in feedback email if they have not consented

Need to secure Auth - User admin to superusers only so that not everyone can see all the email addresses

Update text on account creation screen to indicate how to remove consent to email