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
First of all, `context.stack` should be `e.stack`, right? 

Even then, outputting both `e.stack` and the result of `extractStacktrace( e, 0 )` looks like a bad idea to me - I don't think two stacktraces at once are useful. Though I would like to see an example of the actual output to confirm that suspicion.