Feature stop run

This updates the framework API  to allow Stopping a test run. It also includes a lot of reorganization of classes, which will probably make it a bit tricky to review, especially since I started the work before my vacation trip and continued it after. I suggest looking at one commit at a time in that case.

Once this is merged, I believe the framework is ready for a 2.9.7 release. However, it's probably best not to merge it until the corresponding nunit-console pull request using the revised API is also ready to merge.
More code to remove if it isn't going to be used.