handle errors correctly

this pull request is a patch and adds correct error handling.

In pull streams when a duplex stream errors, it must tell the reader that the stream errored (when they next read) and abort the readable (because no more data will be read). Unfortunately I had to remove your elegant EOF marker, because now there where errors and ends that both need to be handled. So, now there is a `ended` booly. I have used a similar pattern in many other pull-* modules.

Also, test coverage for error handling is provided.