Untangling combined publish/force publish method

This prises apart publishing and force publishing so that they are
performed with two distinct methods and have separate state machine
transitions and validity checks. This removes the need for the :force
flag when publishing and also allows makes it easier to define the
valid transition state for either case. This manifests itself in
editions#show, where we can now ask both a) if the user has permission
to perform the publishing action and b) if the action can be performed
on the edition.

I've tried not to change the tests too much with this commit to both
make the review easier and also to guard against regressions; the
tests around publishing and force publishing are a bit of a mess and
spread all over the place, but it makes more sense to tidy these up
once the workflow action service objects are extracted.