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.
This is probably pedantic, but as `Println` function isn't modifying anything in the `watchedFile` struct, should the receiver not be a pointer to watchedFile struct.  In other words, should the function signature be written as:

```
func (wf watchedFile) Println(line string) error 
``` 
instead of:

```
func (wf *watchedFile) Println(line string) error 
```
?