This defines a new sort of TestResult, StreamResult.

This is intended to prototype the new API for inclusion upstream.
Adds a recording StreamResult for writing tests with.
Adds a CopyStreamResult which copies StreamResult events to multiple outputs.

This allows applying multiple terminal handlers to one stream.