Introduce body_model directive.
Revert "Introduce body_model directive."

This reverts commit 5bc43cb6f779eed4e827daa2fa4735c31ccc111b.
Start of implementation of deferring links. Right now it still
needs to return variables-as-in-url instead of the real context,
which is wrong. I also think current .child() behavior is wrong in
taking the variables in the url instead of the real context.

In order to get more clarity in this area, I started refactoring
the way the Mount logic works.
Get rid of generic.traject and generic.context for the sake of
simplicity; this actually simplifies traject tests too.
Slight refactor of traject_consume for clarity. Use obj for instance,
not model (needs refactoring elsewhere later for consistency).
Let flake8 ignore classes that start with lowercase, as a lot of
tests make use of these.
The Mount class is now gone. Instead we reuse the App subclasses for
mounting. This simplifies the mount code considerably.

There are a few breaking changes introduced with this code, however: the
mount directive now takes (and sometimes rqeuires) a variables argument,
and request.child() takes the arguments to the App class (i.e. what's
in the dictionary returned from the mount function) instead of the path
variables as it did before.
Further advance the way mounting works; it's much simpler in its
implementation, but we retain the same functionality, and it's more
powerful in some ways.

We now need to return an instance of the mounted app using the
mount directive. You can specify your own __init__ for apps.
There's a new 'app' argument to path functions to access the mounted
app. request.mounted is now request.app.
Factor out MountRegistry.
Make .child with extra parameters compatible with previous versions
of Morepath again. Instead allow other mode for .child(), giving it
an app instance directly. This supports both use cases.

Modify defer_links to require returning an app instance, like the
mount directive does too.
use app.traject instead of app.registry.traject.
Implement .ancestors and .root on the app object. Document a
few of these methods better.
Document request.app.root and request.app.ancestors.
A few doc fixes.
Document defer_links. Correct the mount directive to talk about
the new behavior.
Whitespace.
defer_links now also defers request.view().
Defer link and view to ancestors of app if inherit_links is set to
True during mounting.
Test case where we defer links to a non-existent parent app
Added documentation about auto-reloading Morepath during development