feat #791 add async-aware `beforeClass` and `afterClass` in TestCase

Apart from long-existing `setUp` and `tearDown` that are executed before
each test method, add `beforeClass` and `afterClass` which make it
possible to execute heavy methods only once.

The main added value is the possibility to do the things asynchronously
here (otherwise it could have been done in `$constructor`). Could be
useful e.g. to load a big JSON in `beforeClass` and then write normal sync
tests, instead of forcing the developer to load the JSON and continue in
the callback function.

-------

WIP; TODO:
1. do real async thing (like reading a JSON) in the async test version
2. think about error handling when the user uses an async version, and forgets to call the callback. The test should e.g. time out, but now it just hangs in that circumstances.