Allow watchers to be stopped

I was trying to figure out how to cleanly stop watchers, but it seemed impossible (perhaps I'm mistaken).

This change makes it keeps track of the active watch request and provides a `stop` function. It doesn't include a test ("it works for me") because I wasn't sure how to best implement and mock things - if you have advice I can try to make the test, too.

Thanks for the module!