apps/nsq_to_file: supported rotate by size & interval, added <PID> format tag 


apps/nsq_to_file: supported rotate by size & interval
    
    ADD:
    --rotate-size=0,        rotate the file when it grow bigger than `rotate-size` bytes
    --rotate-interval=0,    rotate the file every `rotate-interval` seconds
    --max-revision=1000,    the max <REV> number
    
    CHANGE:
    1. rename <GZIPREV> to <REV> in filename format
    2. reduce `Ticker` duration from 30s to 10s.
    3. rotation only triggered by `Ticker`
    4. `Sync` before `Close`
    
    REMOVE:
    --skip-empty-files,     deprecated, no longer used.

apps/nsq_to_file: add <PID> filename format tag

aha, do you mean:

```go
func (f *FileLogger) Write(p []byte) (n int, err error) {
    f.filesize += int64(len(p))
    return f.out.Write(p)
}
```

```go
if f.gzipEnabled {
    f.gzipWriter, _ = gzip.NewWriterLevel(f, f.compressionLevel)
    f.writer = f.gzipWriter
} else {
    f.writer = f 
}
```

```go
_, err := f.writer.Write(m.Body)
```