Optimize file system watching

FileSystemWatcher in IO.fs does not raise Changed event at all if a sample file is changed inside VS (at least). Instead, it raises several Delete events in a row. As a result, invalidate() function is called multiple times. 

This change adds all the NotifyFilters into the watcher and remove handlers for Delete and Rename events. As a result, the Changed event is raised every time the file is changed in VS.