Async: Tests are now Promise-aware

Fixes #632.
Ref #534.

I'm **not** loving how un-DRY the `Test#run` function is... but that's not _new_, only exacerbated by this PR.

Criticism or other suggestions welcomed, as usual.

cc: @domenic @stefanpenner
`test.stack` is from [src/core.js#L111](https://github.com/jquery/qunit/blob/435a1ddb5a76b8ff11361459ed2e71afa38e94e7/src/core.js#L111)