Virtual root index support for API

This makes the API have an additional route that matches '/' as the
path, taking precedence over the normal index page whenever the
containment includes the APIResource. With this change, a request to
the root with the X-Vhm-Root header set to "/api" will return the API
service document, enabling a separate subdomain for API requests.
Pretty print the API

We could allow a flag but that requires rolling our own JSON renderer,
which is excessive for the moment. However, this simple change keeps
the API human readable, which is important for developers trying to
integrate. The only cost is whitespace, which compresses really well
over gzipped connections anyway.
Move notification related code to a separate directory

Motivation: Make it a compact module, easier to factorize out into
a sepaarate repo later.
DeOOP Notification templates

ReplyTemplate and NotifierTemplates were semi-classes with only a bunch of
static functions collected under a class. Separating the templates in module level
makes these abominations obsolete.
Create reply-notification for newly registered users

This reply-notification-template will be used for the notifier to send replies,
and can be activated/deactivated
Move domain_mailer into notifications
Notifications tab stub

This tab will list the user's notifications.
A new tab is better (even if now it is a one element list) because
works differently then the rest of the account data.
Fetch subscriptions list from backend

The h.auth.local.ProfileController class (which handles account editing)
has now a profile GET call which sends back all subscriptions for an uri
(now a username)
Fix notifier tests

Many were broken because of the refactoring
Add unsubscribe operation

This is used by email links. This operation sets the active state to false
of a notification subscription.
Add unsubscribe link to emails
Migration script

Added a new Alembic migration script

Upgrade:
- Drop user_subscriptions table (we haven't used it anyway)
- Create subscriptions table (with the new structure)

Downgrade: Inverse
Lazy generate missing reply notifications

This is backwards compatibility for existing users.
At login they'll have their notifications enabled.
Fix notification tests again
Simplfiy templates, get rid of registration
Rewrite notification tests

Due to the changes, every notification template can get its tests file.
Rewritten tests to be more unit test focused
Flake8 cleanup
Update markup for the notification form
Refactor includes to make all the models

Rather than putting the notifications module into the multiauth
configuration, which was a nasty hack to get it to load early,
remove the automatic inclusion of pyramid_basemodel and put it into
the load order after h in `pyramid.includes`. That gives multiauth
time to include the local account and its models before the
pyramid_basemodel is included (at which point the models are actually
created).
Strip the notifier templates after rendering