Either use ListenWatcher or PollingWatcher.

If `listen` is available we will default to ListenWatcher,
but if not we will use PollingWatcher.

`listen` provides the ability to use OS specific file system
events so that polling for changes takes significantly less
IO and CPU overhead.