Refactor corpus tests

Also ensures that all possible temp test files are removed

Not a whole lot of changes here, mainly changing CorpusTester to be a concrete class. Needed to do this because some temporary test files were not being removed and could cause multiple test runs to fail.

Just looking for comments & approval before merge.