Fix handling of END event from source

Hi. First of all thank you for the whole min-stream work!

I stumbled across two issues while using `streamToSink()`. Commits below fix them.

 The first commit prevents hanging in a case when final `read(null, cb)` call completed synchronously. 

The second prevents `writeable.end()` after error. Currently Node sends http response with no body in that case. Anyway it's better to be more correct and not rely on such details.