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.
Why did you decide to add the Errors and Events as separate attributes for the watchedFile struct?  They already seem to be attributes on the watcher attribute (watcher.Errors and watcher.Events).