Airbrake error fallback

Fallback to `msg` in airbrake hook if:

- no `error` was provided (or it wasn't an `error` type)
- `msg` is an `error` type

For convenience since often `msg` will just contain the anyways.

Also fixes a panic if `error` was not an `error`.
Same reason I changed all the others? The goal of this PR is to pass the arguments intact to the formatter and hooks, which you can't do if you format them into a string right away...