58501480 publishing service objects

Tracker: https://www.pivotaltracker.com/story/show/58501480

This work introduces the first two edition service objects: `EditionPublisher` and `EditionForcePublisher`. The aim is to encapsulate the edition publishing and all the related tasks that are performed when publishing an edition into a single service object, rather than having things strewn across various callbacks and observers. The actions in question include: archiving previous editions; notifying relevant authors; sending gov delivery notifications; (re-)indexing the edition for search; (re-)indexing supporting pages and related editions.

This only covers the two most complicated edition actions. The remaining actions (submit, reject, unpublish, schedule, unschedule, approve retrospectively, convert to draft) are to be tackled later, once this has been merged and thoroughly tested.