Added some code documentation.
Fixed stability of one of the tests

This test was flaky for me. System.out.print() sometimes did not incur 'flush' in time and hence the output events were not attached to correct test id.
GRADLE-2841 Started capturing output events earlier

- Tidy-up is pending (remove unused fields, etc.). This change removes some duplication between TestNG and JUnit as the capturing of output happens outside of specialized test framework code.
- Changed the class that captures output: it now supports hierarchy better (previously it only supported 2-level test hierarchy).
GRADLE-2841 Removed unused fields
Added another integration test for TestNG support.
Added more documentation regarding TestNG
Added another integration test for TestNG support
TestNG coverage - reduced duplication
Covered the capturing logging from logging tools (TestNG)
Checkstyle
Busted complexity to separate classes to simplify testing and kill a shamock test I contributed when I was young and stupid