removes some dependencies on file system.
updates integration tests

moves some files from the unit test project to the integration test
project. Refactors a lot of code with the filesystem and directory
searcher classes.