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
I think the `IsRooted` needs to be changed to perform a `Path.IsRooted` instead. The current `IsRooted` check verifies if the file path starts with `Root` path which is not we're trying to guard against.