Refactor Publishing API presenters and workers

Some refactoring of the code that pushes things to the Publishing API:

* Put the code that decides which presenter to use into one place
* Add a generic worker for pushing content to the Publishing API, relying on the above code
* Add a data hygiene helper class for (re)publishing things to the Publishing API, which we are likely to be doing often whilst we migrate content to the content store.

The main upshot is that we no longer need to change any of the worker code when we want to push a new type of model to the content store - we can simply add a presenter for it and update the `PublishingApiPresenters.presenter_for` method.

Note that there will be a further cleanup task once this has been deployed and any existing jobs worked off - both app/workers/publishing_api_edition_worker.rb and app/workers/publishing_api_organisation_worker.rb will  become redundant and can be removed.
The assertion fails otherwise. I can't remember exactly why, but it's something to do with the [parsed body of the request](https://github.com/alphagov/gds-api-adapters/blob/master/lib/gds_api/test_helpers/publishing_api.rb#L22-L34) not quite matching the structure of the hash `as_json` returns. This little dance ensures that the JSON at both ends match. Probably a good idea to rewrite this to make it clearer...