Provide a public API for creating pages that have a "shell" template.
Provide a public API for creating pages that have a "shell" template.

This is a comprehensive reworking of the way URLs are internally dispatched in Mantissa, designed to provide more information to code that is actually producing resources, and to allow applications to reduce their coupling with internal implementation details but still provide the same functionality.

This change also includes the first tutorial documentation on producing resources in mantissa.

Some work still remains to be done in order to provide this information to all portions of an application that might require it rather than just site root plugins (re #2707) but the foundations for a really good public API have now been laid.

More practically this change eliminates all the obscure special cases between objects providing `INavigableFragment` under the `/private` hierarchy and under the sharing hierarchy (`/users/xxx` and `/YourOffering`).  Shared items may now provide non-live adapters and `IResource` adapters.

Author: glyph

Reviewer: pjd

Fixes #2682
Fixes #2680
Fixes #2681

twisted/hyperbola,twisted/hyperbola