Make save draft an action

I think this simplifies things by making all things you can do in the
editor an action.  We have several workflows that want to perform some
work when a draft is saved and they have to override
action_for_add_subtitles(), which is annoying.  Now they can just add
the code to the save draft action.

We still need action_for_add_subtitles(), since we have to support API
calls from partners that don't specify an action.  But we now only
need to support it for older workflows.
Refactored action code

Split perform() into several parts:
  - validate() handles the validation part
  - update_language() handles updating the SubtitleLanguage in
    add_subtitles().
  - perform() handles the stuff that used to be done in do_perform().

The main improvement is that perform() isn't called until after the
add_subtitles() transaction is committed, which seems more correct.
For example if we want to try to send a ping to some external service
we shouldn't do it until we have actually saved the data in the DB.

I also think that the code is a bit simpler now.  Calling the function
do_perform() was a bit awkward.  Also we don't need the send_signals()
function anymore, we can move that code into perform().

I think the tasks code should still work.  One difference is that the
code that was in do_perform() is being called later on, after the
subtitles are saved.  However, this is basically the same process as
saving a draft, then clicking the Complete/Approve/Send Back button
without any extra changes.
Fix send back action (#1862)
Merge pull request #1875 from pculture/workflow-refactor

Workflow refactor