Remove PublishLogger in favour of PublishingTasks

Instead of creating new log entries for every state of publishing, instead we are going to use publishing tasks as a way of telling the workers which manuals to publish.

There is no need to interact with the workers through a registry as we gain very little from this interface. Instead we can simply pass the worker class directly to the service and interact with it directly.

This means that PublishingLogs can now relate to a successful PublishingTask which will contain state of documents current publication.
Change PublishingTask state on error or success

When something fails in pushing to panopticon let the PanopticonRegisterer raise its own error. This will bubble up to the worker allowing us to rescue from specific error types. In the case of ClientError we should abort as this is unrescuable (ie duplicate slugs). In the case of a ServerError we should retry a certain number of times. In the case of any other error, we should abort.

All errors are logged with Airbrake in order to notify us of persistent failures in publishing.
Add association for Manual and PublishTask

This commit adds an association marshaller between Manual and PublishTasks allowing us to make the most recent PublishTask available to the specialist-publisher frontend for feedback on how far the publishing task is from completion.

This association is read only!
Provide feedback of state of publishing manuals

Display a user centred message to notify the user of where the PublishTask is in the queue so that they are aware that when they press 'Publish' that there will be some time before the item is "published".