DeferredFileSystemWatcher

Since FileSystemWatcher is being used in two places already and might be
used again, this is a reusable version of the timer-deferred watcher
with batched events.  Why this functionality isn't built into the
default component I don't know...