Add state for queued publishing

Now that publishing is handled by the sidekiq queue, we should handle state of a PublishTask in order to give feedback to the user and provide a mechanism for tracking errors with queued publishes. Instead of using the PublicationLog for this we will use a stateful model 'PublishTask'. Which can be used for both error tracking purposes and editor feedback.

If the versions don't match this will silently do nothing – we should at least log an error. This is something that shouldn't really be happening, and if it starts happening much we need to investigate.