Unscheduling publishing 2 0

This adds the wiring for unscheduling editions with the Publishing 2.0 stack.

When a scheduled edition is unscheduled, we remove the publish intent from content store. If the edition is also a first-edition (i.e. "coming_soon" item(s) will have been published for it), then we also replace those with "gone" items.

Note that the removal of publish intents and replacing "coming_soon" items are done in separate jobs. By separating them, we can insure that failure of one won't impact the other and they can be retried independently. This is different to how the scheduling code works (where both publishing the publish intent and publishing the "coming_soon" are done as part of a single job). I _think_ this might be a better approach because it separates concerns a bit better , but would appreciate feedback.

Note for reviewer: The first few commits are refactorings of related code. The meat of the feature is implemented in the [final commit](https://github.com/alphagov/whitehall/commit/541f57ca534eff308b27208c9db4e214cc944a40).

Story: https://trello.com/c/gkxMVXtW/77-unscheduling-a-document-from-publication