Filesystemwatcher

I needed a testable `FileSystemWatcher` and figured I might as well throw it in here.

It currently does not implement any of the members from MarshalByRefObject. If you want them in there I can tack them onto the IFileSystemWatcher interface. Or if we make a IMarshalByRefObject interface