Refactored how binaries are used in unit tests

Instead of repeating the same copy code in all tests, a new class called
ShadowCopy was created. It takes a embedded binary resource and extracts
it to temp directory. The benefit of having the binary as a resource is
that it allows for shadow copying test assemblies during test.