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.

This line won't get called because `requeue_task` always raises.

It's probably best to call `log_error` before calling either of `requeue_task` or `abort_task`.