evaluate assertions immediately after xhr.abort()

Anne has made a good point that it's more appropriate to perform assertions here, rather than in
one of the other event listeners, because XMLHttpRequest#abort() should be synchronous, and the
abort and loadend events are dispatched synchronously.

So, this simplifies the test and avoids relying on setTimeout(), which is nice, and potentially
avoids missing assertions in non-compliant browsers.
Merge pull request #968 from caitp/xhr-abort-events-noncompliance

evaluate assertions immediately after xhr.abort()