Don't return EOF if reading 0 bytes from the end of the buffer.

It's unexpected for Read([]byte{}, n) to ever return EOF.
Add to the test: check no EOF if reading before b.Size()