Add test to reproduce race cond. in watchDir/close

If a call to Gaze#close is made right between when Gaze#watchDir's
listener fires and the timeout executes, the watcher continues to watch
for changes.

This requires a separate node process to keep making changes to the file
as a single node process is single threaded and IO-bound so it would
never encounter this scenario.
fix watchDir not respecting close in race cond.

If a call to Gaze#close is made right between when Gaze#watchDir's
listener fires and the timeout executes, the watcher continues to watch
for changes.

This happens because the watched list is now empty and so the watcher
thinks the file was just added to the directory so it gets re-added and
fires an 'added' event for that file.

- Add check to make sure that directory is still in watchers list so
  timer is still valid and should still execute event listener

- Clear previous timers for same watched directory before setting up a
  new timer