We were assuming that watcher threads will be cleaning up after
themselves - i.e. will remove paths from Watcher._watching dict on
Watcher._stop_watch(). Turns out _stop_watch() is killing the threads in
a hard way using thread.stop(). This means that paths are never removed
from Watcher._watching dict and on restart (i.e. Watcher.start()), the
method considers that there is no path that we're not already
processing and does nothing.
This commit fixes that by cleaning up Watcher._watching dict in
Watcher._stop_watch() method.
Closes-Bug: 1790912
Change-Id: I17baaab1769ca5882f0b8edf496f92ac39507969
(cherry picked from commit 346f76292a)