Refactor test-support

This change breaks the test-support project down into more cohesive
components.  It is still un-tested.