feat(tests): Tests are synchronous by default.

Any test not marked as 'async' will fail if it calls runAsync.
Also:
 -> added a noMoreAsync() call which, in an async test, will cause
    any future runAsync calls to fail

 -> async() now happily runs dangling runAsync() calls.