WatchService: fix some issue

- getEvent not returning even tough there is a change
- use addEvent
- add test
WatchService: not recursive and getEvent timeout
WatchService: check if directory exists or not before scan