Test: Implement universal module setup/teardown

This implements the equivalent of setup/teardown methods that are define once for the entire testsuite, but run for each test. To make this easier to understand, we've went from setup/teardown to beforeEach/afterEach, renaming the existing module properties at the same time (in a separate commit).

Fixes #633 
I'm okay with renaming these methods, but the "each" part doesn't really make sense, since they are called just once for each `Test` instance. We can also just leave the names as-is (Test#setup and Test#teardown), since these have a completely different scope. If we rename, then "before" and "after" should be good.