Exported watcher type cleaned some ifs
New Watched interface, required by Watch & UnWatch
Introduced new Watched interface with two Path and Reload methods.
before this for watching a path and an action of type func() was
needed but now we should pass a type witch implements Watched
interface. This helps with having multi-subscribers for each path
also removing subscribers are easier now.
Also added new WatchedDir type which implements Watched interface,
This is a helper type for watching directories with no action.