Problem: does not handle dropped writer properly

When waiting for read, blocks if the writer drops. Solution is to
return a short read, or read_end if there's zero data.

Fixes #41.