Push down test selection and add framework for output capture

This clearly is a WIP. We know have the reporter granularity to capture
per mutation test outputs + per mutation test selections.

This adds all infrastructure to address:

* #185 we know which tests are run in reporter
* #180 fine grained information available for the reporter
* #178 minitest project integration only needs to return an enumerable
  with metadata
* #174 We can now "see" all test, allowing to generate a default
  matcher.
* #158 Ability to steer test selection centralized for all integrations
* #125 We have the required objects in graph
* #96 We have finer granularity in reporter graph

Because we know signal more complex state from killforks to parent I
need to bring back killfork partent signalling, but this time with
sending complex data around (Test::Report). Should be easy with
Marshal.{dump,load} but my OSS time budget is exhausted for now.
Merge branch 'master' into spec-output
Merge branch 'master' into spec-output
Merge branch 'master' into spec-output

Conflicts:
	config/flay.yml
Bring back test isolation
Avoid useless local lvars
Restore progress printer
Merge branch 'master' into spec-output

Conflicts:
	config/flay.yml
Merge branch 'master' into spec-output

Conflicts:
	config/flay.yml
Fix calculation of amount of kills
Simplify colorized progress report
User constant for static unmutated literal
Reduce public interface of CLI reporter
Add specs for null reporter
Rename internal method for clarity
Move constant above class body
Move constant sub expression to constant
Add closing comment
Do not present un idempotent interface on abstract class
Add integration spec for 'null' strategy