Fixed handling of unexpected end-of-stream and partial-read conditions in several places. EndOfStreamException should now be reliably thrown on premature end-of-stream, and finicky Streams that do not always Read() all requested bytes are now handled with patience.
Added unit tests for reading from partially-Read()ing Streams.