Account for WatchKey reuse

The same WatchKey can be reused in a WatchService. When that happens, add on to (instead of replace) the file extensions associated with that WatchKey.
Revert "disable the Java 7 WatchService implementation for now, since it simply doesn't work in testing"

Since the problem with the Java 7 WatchService implementation has been fixed, enable it.

This reverts commit b8c4140d2407dbdcda813a1756a5867cec308154.
Merge pull request #513 from candrews/patch-11

Fix Java 7 WatchService implementation of DirectoryWatcher