Migrate to pipe. Dropped rotation options.

Fixes #28 

There are some things that may seem odd about this code, (`file` vs `directory` options) but there are plans to add the time rotation back in and I left some of the logic in there to make that easier.

- TODO add more validation on the options. https://github.com/hapijs/good-file/issues/33
Ah -- I missed the `{end: null}`, which explains why it didn't explode! Even if `end: null` is passed, the appropriate pipe cleanup will still be called once readable ends. There's no need to `unpipe` readable from writable.

**However**, it's important to note that pushing `null` on *this* tick won't necessarily teardown the writable **or** the readable stream on the same tick. And this is desired. Here's why:

```
// -=-=-=-=-=-=- current (in-git) behavior -=-=-=-=-=-=-
// > this._readableStream._readableState.buffer
// [Buffer(40), Buffer(43), Buffer(20)]
// > this._writeStream._writableState.buffer
// [WriteReq(Buf(100))]
goodFile.stop()
// > this._readableStream._readableState.buffer
// [Buffer(40), Buffer(43), Buffer(20), <EOF>] <-- this is the EOF we want
// > this._writeStream._writableState.buffer
// [WriteReq(Buf(100)), <EOF>] <-- this is an EOF too soon, introduced by `_writeStream.end()`
```

The problem is that the buffers in `_readableStream._readableState.buffer` **will not** be written to `_writeStream`, ever. If we're hoping to not lose any data, we should `push(null)` on the `readableStream`. Once `finish` fires on the writable side, we know that both readable and writable are closed and all data has been flushed.

That leaves the problem of other events coming in while this is happening -- those could either be ignored (by keeping a state variable that returns early on new events) or handled by building a new readable and writable pair pointing at a different file -- though, given the nature of `.stop()` the former would be more desirable, I imagine.

In general, it's best to *either* interact with streams via `.pipe` **or** `.write` and `.end` -- using both at once tends to have unexpected consequences.