Allow on_error hooks to return a Response.

This allows on_error hooks to prevent the exception from being re-raised,
and instead causes the returned Response to be provided to the end user.

The first on_error hook to return a response "wins", and the remaining
on_error hooks are not ran.