Split testing code into own project

The core and pops projects were duplicating their test infrastructure
code. This pulls that out into a separate project, testing, that
contains all of the test infrastructure code.