File change watcher refinements

- use a mock watch service for most FileModificationThread tests
- changing the thread to use a blocking wait rather than a check/sleep loop
- incrementing all file versions if we get an overflow event from the watch service
- using the ExtendedWatchEventModifier if the class is available, otherwise use the SensitivityWatchEventModifier if that class is available or failing that use the default implementation we had previously. (#1077)