Fix for occasionally failing tests that use GetSpecialFolder

Changed all of the tests that used GetSpecialFolder to use a new TestDirectory class that takes care of creating and deleting a directory for testing.

For code review, the only thing of real interest is the new `TestDirectory` class although I think the TeamCity builds will speak for themselves.