Raise instead of returning false in AR callbacks

We never check whether a `#destroy` fails in our controllers:

    def destroy
      article = Article.find(params[:id])
      article.destroy
      redirect_to articles_url
    end

Because of this history, it would cause confusion and potential bugs if
we introduced a normal `before_destroy` into any of our models. Not only
will we need to check the result of `#destroy` for any controller using
that model, but we'd also need to check the return value for any
controller using models that associate with that model.

Since callbacks are used for validated database objects and are expected
to succeed, we should raise on failure. This will roll back the
transaction and notify the exception handler (e.g.  Airbrake).

This is true of all callbacks, not just `before_destroy`.