Adds loadable contexts and email view urls

@Wilduck this provides the following:

- Email Templates can now define a context_loader path to a function if they wish to pass the context through a function before it is rendered. This provides the ability to fetch various objects that may not be able to be serialized in the email context
- An EmailView and url was added that renders emails as a web page.

Future additions
- Add permission checking so that only recipients of the emails can view the email web page
- Elegantly handle cases when the context loader fails