Ending streams properly and using the node common pipe behavior

I had some issue on switching from streams to buffers since piping the buffer didn't end the stream when piping a stream did. This could break some code but that code would break also when switching from buffer to streams anyway.

Here is my proposal to make it a bit more consistent by using the current NodeJS pipe method signature. Hope you'll find it usefull.