Abstract common Document observers registry code

Observers should be the same for all SpecialistDocument types, so let's DRY up the code here.
Add exporter and formatter for email alerts

Following the patern of

* Things that send data to an API = Exporter
* Things that an exporter uses to format for an API = Formatter

The EmailAlertExporter exports formatted emails to the GovUkDelivery API
Add EmailAlertExporter to publication observers

Wire up the EmailAlertExporter in the publication observers chain for SpecialistDocuments. This should be the last thing in the chain so that we only notify users of a new SpecialistDocument publication once it is fully available on the frontend.
Features to test publication alert workflow
Move Publication alert formatting into a view

|Instead of rendering text directly in the Formatter, use ActionView to render an erb view.
Add more meaningful copy to the publishing email

In order to allow human readable copy to email alert we need to provide some custom humanized attributes to the formatters. Instead of binding the formatters to the schema instead we will subclass the formatters to provide this information
Ensure that a topic exists before publishing to it

In order to create a new publication email we should ensure that a topic exists in the publication api before trying to export a notification for that topic.
When republishing, dont send email notifications

When republishing from a script we do not want to notify users. Instead use a separate set of observers in order to republish documents in the system.

This is a system only journey and is non user facing!
Merge pull request #260 from alphagov/feature/send-email-on-publish

Send email alerts on publish