Notification preferences; fixes #248

This fixes #248 by adding a UserProfile model, created when using the .get_profile method

    user = User.objects.create_user('example', 'example@example.com', 'password')
    
    # raises DoesNotExist
    user.userprofile
    # creates it
    profile = user.get_profile()
    # no longer raises error
    user.userprofile == profile # (True)

At the moment UserProfile just has three fields, for the three sorts of notification emails currently being generated. This pull request adds a form in wagtail admin to select which notifications (of those your privilege of user is eligible to receive) you want to receive, and provides a link to that preferences form at the bottom of the notification emails.
This could be simplified a little by using our custom queryset methods defined in wagtailcore.query

Eg:

```python
publishable_pages = Page.objects.none()

for perm in self.permissions:
    if perm.permission_type == 'publish':
        publishable_pages |= Page.objects.descendant_of(perm.page, inclusive=True)
```