Better global search path sandboxing in tests

This is an alternative to #2353 

There are a number of tests that modify the global or system search paths during the tests.  This adds a helper function to make it easier to restore those paths and makes sure that they are getting restored in a manner that preserves test isolation.