Explicitly creating all directories in MockFileSystem

The major change here is that the data passed into the MockFileSystem creates all directories implied by the data. So:

{
    { @"A:\1\2\3\foo.txt", new MockFileData("Hello") }
}

will now create entries for the directories:
 - "A:\1\"
 - "A:\1\2\"
 - "A:\1\2\3\"

as well as the file:
 - "A:\1\2\3\foo.txt".

This helped me implement MockDirectoryInfo.GetDirectories.

I also implemented a few methods I needed on MockDirectoryInfo:
 - GetDirectories (obviously)
 - Create
 - Delete
 - GetAccessControl
 - MoveTo
 - SetAccessControl
 - Parent

Finally, I added attributes to MockFileData, and then exposed them in MockFileData & MockDirectoryInfo