second pass

Originally I just noticed that the watcher did not work for multiple log rotations so I wanted to fix that.  Then I realized that the watcher might also leak memory if I didn't explicitly remove the file from being watched.  Then I decided I should encapsulate the file, handle, and watcher.  Then I tried to find other possible bugs.
To make them public.  At first I tried just providing a function that delegated to `watcher` but that didn't work in trying to read (`<-`) from the channel.  This was also a candidate for embedding `fsnotify.Watcher` into `watchedFile` but I don't think it would work because there was too much overlap.