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.