Throw strings

This pull request started out trying to handle the case where users throw strings in JavaScript and quickly led to a pretty major change in the operation of `Airbrake.push`

`Airbrake.push` now throws the error passed to it after reporting is completed. This parallels the behavior of TraceKit's `report` except the error may not actually be thrown during the execution of the `push`, and instead may be rethrown sometime later.