watchDir does not respect `close` during race condition

When a change is made right during the close method, before the timeout
of the watchDir is executed, the watcher gets revived into a state where
it prevents new watchers from watching the same directory and triggering
the event.

This is difficult to reproduce as it requires another process to keep hitting the files during the close of a Gaze object.

Sequence of events that to reproduce:

1. File change occurs
2. `watchDir` fires
3. timeout set from `watchDir` for 110ms
4. Call to `close` on watcher
5. timeout fires from `watchDir`
6. `done` method gets called and watchers get re-added to `this._watchers` of the already closed watcher.

I hope this change gets backported to 0.3 as grunt-contrib-watch is getting affected by this.

This can be easily reproduced by setting up a watch task and pressing save on a single file many times quickly, gaze would eventually stop firing events as it previously did not support watching the same folder by more than one watcher.