A greatly improved UserUpdateAction, etc.

And it's the "etc." that's made this commit worth the effort.

Let's start with `ActionResultHandler`, the superclass of
`UpdateUserResultHandler` et al. By adding a `#result_succeeded?`
method that *defaults to* `result.success?`, it works just as it did
before. *Except that* subclasses can override `#result_succeeded?` to
return, say, `result.valid?`, as in `UpdateUserResultHandler`. That
lets us pass into our handler the output from an
`ActiveInteractor::Base` subclass' `#run` method or, by default `run!`.
What's the difference, you ask, being too busy to go look in the doc
yourself? `#run` returns a "result object", whose `result` attribute is
the return value from `#execute` on success or `nil` on failure. The
`#run!` method, however, returns what `#execute` returned on success,
or *raises an error if validation fails*. Because, after all,
`ActiveInteraction::Base` quacks enough like ActiveModel that
ActiveModel's validations can be used — leading to simplified and more
effective code. You'll see from earlier DSOs that I in fact did this
several times, but early versions of *this* generation didn't. Now our
support code can swing both ways.

I've fixed `UpdateUserResultHandler#on_failure` to Do The Right Thing
as well.

RSpec: 998 examples, 0 failures, 83 pending
RuboCop: 252 files inspected, no offenses detected