Use new filewriter package for logging to disk.

This allows for safe log truncation.

filewriter is an io.WriteCloser.  It takes a file path on initializing,
and proxies all writes through an io.Pipe(). When truncation occurs, the
file is closed, causing the proxying to stop, meanwhile the
writer end is still accepting writes. After truncation is completed it
re-opens the file and starts proxying those writes again.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>