Use StopListening as a return result

Note that this doesn't implement StopListening yet — the returned actions do
nothing.

I also haven't checked yet that the Win32 and OS X code paths compile.
gitignore cabal-sandbox
Don't redefine void
Simplify WatchManager by using an existential type
Use async

This solves problems like exception handling, termination of the forked thread
etc.
Move code around
Simplify readEvents. See #43