Remove bangs from throw/catch symbols

> ... we use bangs in methods to differentiate a "surprising" method
> from a same-named unsurprising one, and since there isn't an
> "unsurprising" version of the symbols to compare to, I'd leave them
> off  -- @avdi
Modify #fail! to raise exception

I was including a payload (:success!/:failure!) both in #succeed! and
in #fail! (i.e. `throw :halt, :failure!`). This way I could examine the
payload and tell the difference between a :halt coming from #succeed!
and a :halt coming from #fail!. In effect, I was re-inventing the
raise/rescue mechanism.

I believe the #fail! method should throw an exception - it represents a
failure, after all. If the only reason to include a payload when
throwing :halt is to compare it to :failure! when we catch it, then
replacing `throw` with `raise` in #fail! obviates the need for any
payload at all.

Also, now that we are raising exceptions again, it makes sense to flip
the logic back around so that #perform calls #perform!, but rescues any
Interactor::Failure exceptions, while #perform! allows any Failure
exceptions through.