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.
So if the select block (lines 41-56) looked like this:

```go
select {
        case ev := <-wf.watcher.Events:
                isRemove := (ev.Op&fsnotify.Remove == fsnotify.Remove)
                isRename := (ev.Op&fsnotify.Rename == fsnotify.Rename)
                if isRemove || isRename {
                        wf, err = wf.Reopen()
                        if err != nil {
                                log.Fatal(err)
                        }
                }
        case err := <-wf.watcher.Errors:
                log.Fatal(err)
        case line := <-writer:
                err = wf.Println(line)
                if err != nil {
                        log.Fatal(err)
                }
}
```

Then it didn't work correctly?