Add a TemplateRenderException

This allows the template rendering to catch known rendering issues
and handle them accordingly. Such as having no record of the
notification recipient. All other exceptions now pass through.
Raise the error if a notification fails to send
Add tests to validate the email notification content