Benchmarks and fixes

Thanks for writing the package.

I added some additional benchmarks, and expanded the write-then-read test. This exposed some bugs, short reads from the Reader and large blocks emitted by the Writer.
I'd like to fully understand this so I'm gonna poke around a bit.  If we're getting an EOF somewhere it means that we're expecting bytes that aren't there, which is confusing...