Add libuv-based watcher

Fixes #821
Move watcher tests into a separate file
Add tests for libuv-based watcher

Four possible results of running tests (first three are errors):

- “The change to inotify/file2 was not detected” on line 83: most common
- “Spurious change detected” at line 81 (uncommon, usually fixed by sleeping
  before running test in do_test_for_change)
- “The change to inotify was not detected” in tree watcher test (e.g. from line
  123) (very rare)
- All OK.