only pass along uncaught exception to `done` when in an async test
Introduce new TestContext type to disambiguate contexts from environments, etc.
Throw reasonable error message when `is` is used with an explicit test context argument incorrectly, fixes gh-45