add a buffered logger

This adds a basic buffered logger that you can use to respond to the ChannelLoggers channel.  This lets you buffer `n` bytes, and write the larger chunks.  

I discovered that `*os.File`'s `Write()` does not return an error if the file is removed.  So we'd silently lose logs during a log rotation.  Instead, this buffers the data and re-opens the file on each write.  Bad idea?

* [x] tests
* [x] get it running in an app

/cc @alindeman @asenchi