refactor($http) Use onload/onerror/onabort instead of onreadystatechange

This depends on #9300 and includes the commit form that pull request. This should only be merged once the #9300 has been merged but I'd like some early feedback.

By using the newer unload/onerror/onabort events the code can be made much more readable and a number of browser workarounds can be dropped.

I confirmed using the iOS simulator that #5426 does not happen with the unload event.

I suspect that this is also a bit faster, since the browser has to call events less often but that's going to be negligible.