Add methods to turn lambda into observable

These will come in handy soon. Also, Directory.CreateDirectory already
is recursive.
Change IFileSystemProvider interface

Changed the methods of this interface to encapsulate the parts where we
actually need serialize access to a file. Also serialized every file
system access.
Added parallelism to SimpleFileSystemProvider

Added a new KeyedMonitor class that's similar in spirit to the
KeyedOperationQueue. It makes sure operations for the same key are done
in serial, but operations for different keys can be done in parallel.
Uniquely suited for dealing with writing and reading to files.