Simplified toString() implementation.
Added some additional verification for TestNG parallel test execution.
Inject a `TimeProvider` into the various test processors and result handlers that need to take timestamps.
Changed TestNGTestResultProcessorAdapter to generate start/complete events for TestNG suite execution, and removed the synthetic event generation from TestNGTestClassProcessor.
Changed ClassLoaderCache to handle `null` parent ClassLoader.
Changed JUnitTestFramework to use the ClassLoader cache to load up junit instead of creating the ClassLoader itself.
Moved validation of TestNG `configFailurePolicy` from the test processor to the test framework. This means the task will fail early when the requested policy is not supported, rather than attempting to start workers and run tests.
Added some coverage for some more TestNG test events.
Added another version of TestNG to test against.
Tweaked 'could not download artifact' and 'could not find artifact' error messages.
Tweaked int test