Refactor Reflection2 tests

The test for 393e2f24c62 cluttered Reflection2Test with a lot of utility methods and some nasty `try...finally` blocks to try to ensure that changes to the `Reflection2` static caches did not affect other tests.

This moves all the relevant logic into an independent test that uses `@BeforeClass` and `@AfterClass` to manage setup and teardown, as intended by TestNG.