C++ spec update
Mark TestDescriptor as having an internal protocol so our listeners can assume the internal specialisation.
Split some responsibilities in the test output writing infrastructure.
Pass the test descriptor through to the output serializer.
Split the test serializer into read and write parts.

This is an interim step.
Split the collection of test results from the reading of them later.
Class rename.
GRADLEREV-13 - Store test output in one indexed binary file.
GRADLEREV-9 - Store test output events by test id instead of name.