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.

Difficult to reproduce as it requires a separate spawned process to keep
making changes to a file during the close method call of a Gaze object.