Remove slug pre-registration before publishing

* Wait until a document or manual is published
  before creating an artefact with Panopticon.
* Remove PanopticonMapping instead perform a GET
  request to check existence and either PUT or POST
  using slug.

NOTE:
* All panopticon communication is now via slug
* Panopticon PUT is only used for publishing a
  second version, withdrawal and re-publish.
Remove cruft from document repository spec
Cuke refactor - What even is a mapping?
GdsApiProxy supports not found
More stringent test for publishing second editions
Add Sidekiq and Redis config

Copies the approach used in other apps, eg Whitehall and Signon
Add note about Sidekiq to README
Merge pull request #211 from alphagov/add-sidekiq-config

Add sidekiq config
Merge pull request #210 from alphagov/change-panopticon-integration

Change panopticon integration
Validate manual section body with safe_html
Don't govspeak manual and manual section summaries

Summaries are for use as a short plain-text summary of the content in
places like search results pages. They shouldn't contain markdown, and
displaying them in the publishing tool processed with govspeak is
misleading for editors.
Validate manual section HTML before preview
Merge pull request #212 from alphagov/validate-safe-html-for-manuals

Validate safe html for manuals
Introduce a Publishing Workers Layer

This commit adds a workers registry which allows us to call a worker
from the controller which in turn can call the services and perform them
asynchronously.

Also allowing tests to run as normal when creating  background workers.
Move logic of queueing publishing into a service

In order to keep our controllers clean, let's wrap our worker in a service in which we can add add extra queueing functionality such as adding states.

Serviceception?
We pass the context not the id!

This shouldn't work ever!
Make ShowManualService not require the controller

As with the SpecialistDocument services, factor out the controller context and instead pass id parameters directly
Make Create/Update Services not require controller

As with the previous commit factor out the controller requirement from the Create and Update manual services so they can be reused outside of the context of a controller
This should be type not typ

LOLZ!
Make QueuePublishService require repo

Make the QueuePublishService depend on the repository in order for the service to find our manual and return it for the controller. This will make logging easier in the future when we require the object.