Refactor file_watcher.py into four files
Make naming consistent with tree_watcher
Remove function that is not used anywhere
Move tree_watcher to powerline/lib/watcher and split it
Move watcher tests into a separate file
Remove in-method imports from inotify
Merge pull request #994 from ZyX-I/refactor-watcher

Refactor watchers code
Add libuv-based watcher

Fixes #821
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 84: most common
- “Spurious change detected” at line 82 (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
  131) (very rare)
- All OK.