If a test is skipped, it doesn't clean up its temp directory. This PR fixes that so skipped tests' temp directories are cleaned up after the test is skipped. The temp directory can be left intact by using the --nocleanup argument as usual.
Implementation: Define a SkipTest exception type. Catch it in the test_framework and go through the normal test teardown functionality. Similar to the SkipTest exception class in Python's standard unittest library @sdaftuar