Unit test subproject and cleanup
This breaks out the generic unit test code into a subproject, cleans up some long standing issues with it API and even improves it a bit.
This breaks out the generic unit test code into a subproject, cleans up some long standing issues with it API and even improves it a bit.