Factor out test selection into Mutant::Selector objects

* Overall easier to test
* Reduces the need to pass around config to subjects
* Reduces the diff to tracing branch
Merge branch 'selection-environment'