Keep sidekiq knowledge inside ScheduledPublisher

Create `enqueue` and `queue_size` methods to achieve this, which has
made things a little more DRY.

This also fixes a potential future issue in cancel_scheduled_publishing
where it doesn't filter jobs to those belonging to the relevant worker.
This isn't an issue at present because currently there is only the one
worker.
Improve take to rebuild scheduled publishing queue

This currently cancels and rescheduled all editions due for publishing.
This won't catch any jobs scheduled for editions that are no longer due
to be published (ie orphaned sidekiq jobs).

Instead, this now clears all ScheduledPublisher jobs, and then
re-enqueues all scheduled editions.