Replace associations with scopes and tidy up

Too many associations where leveraging scopes will do - this gets of
half a dozen.

I've also renamed the unpublished_edition method to
non_published_editions as we the concept on an unpublished edition is
now a thing in the app and they're not quite the same thing.

Finally, this gets rid of some tests around topics and policies that
are no longer relevant as topics are now directly assigned to
editions, rather than inferred through policies.
Replace "archived" state with "superseded"

This renames the existing "archived" state to "superseded", migrating
any existing archived editions to the new state label. The data
migration happens as a normal schema migration so that it will happen
during the usual deploy procress, rather than as a manual data
migration once the code is deployed. This greatly simplifies the story
as we don't need to perform staggered deploys with tha app working
with the data in both pre and post data-migration state. This has been
facilitated by this change (https://github.com/alphagov/whitehall/commit/9b57550ceb3770ee60018c24358630094b9257bd)
which has already been rolled out to master, which will keep the state
machine during the period between the data being migrated and the new
code being switched in.

Note: if any documents are published between the data migration being
run and the new code becoming active, we could end up with some
editions incorrectly labelled with the old "archived" state. We should
either co-ordinate with editors to prevent this from happening, or run
a manual check afterwards to mark any "archived" editions as
"superseded".
Override build_unpublishing to set known attribs

We shouldn't rely on this data being posted by the form.
Get rid of unused method

This was made redundant by the publishing service object
Simplify resetting version number after unpublish

The decrement_version_number method is used when unpublishing a
document to put the version number back to it's pre-published state.
So what we actually want to do is reset it, rather than decrement it.
This is as simple as setting it the version number of the previous
edition, or nil if one doesn't exist. I've repurposed the
edition_to_diff_against method to retrieve the previous edition.
Extract EditionUnpublisher service object

This moves the logic for unpublishing an edition to a service object.
Things still to do: move all callbacks/observers to subscribers on the
action; Extract a base class for the service objects.
Unpublishing editorial remark handled by subscriber
Report error if publish/force_publish fails
Replace observers with service object subscribers

Note that this code changes the behaviour slightly. Prior to this,
there was a bug that meant that supporting pages were lost from the
index if the document was re-editioned (https://www.pivotaltracker.com/story/show/59902334).
Now, all the behaviour for updating the index when an edition is
published or unpublished is in one place and the supporting pages of
the previous edition are removed before the current ones are indexed.

I've also removed the evil `rescue => e` as it's now redundant -
search indexing happens in a background job so we don't have to worry
about rummager disappearing during the request cycle.
Remove redundant callback

There is no observer watching for :after_delete.
Move supersede_previous_editions! out of Edition

It's only really used during publishing.
Extract base class for service objects
Merge pull request #1002 from alphagov/57899408-archive-documents

Rename "archived" state to "superseded"
Merge commit '83ea1556e467507b384ddd7824e12f4dc92bb6ce' into HEAD