Migrate to pipe. Dropped rotation options.

Fixes #28 

There are some things that may seem odd about this code, but there are plans to add the time rotation back in and I left some of the logic in there to make that easier.
`setImmediate` in a loop makes me feel a little queasy. Why not `setImmediate(this._doRead, this)` wherever `_doRead` is currently called?