test_runner: better handle async bootstrap errors
The test runner is bootstrapped synchronously, with the exception of importing custom reporters. To better handle asynchronously throw errors, this commit introduces an internal error type that can be checked for from the test runner's 'uncaughtException'
handler.
After https://github.com/nodejs/node/pull/46707 and this change land, the other throw
statement in the 'uncaughtException'
handler can be removed. This will allow the test runner to handle errors thrown from outside of tests (which currently prevents the test runner from reporting results).