Adds test target
Adds tests
more tests
Cleanup
Refactors FileSwitcher, FileProvider, and FileReferenceProvider