Refactoring IFileSystem

Making AssemblyNeutral and creating .Interfaces package
Changing semantics of string property to be relative
Updating tests
Changing return value to be always non-null with Exists property
Could you add a test to verify `GetDirectoryContents` returns entries when an empty string is passed in? Also tests to verify it throws when invalid operations `WriteContents`, `CreateReadStream` etc are performed on it?