Recursively or non-recursively watch a directory and invoke functions in java. (Wraps the ugly WatchService with a call-back based observable).