3663: StreamFileReader.read() returns just one chunk

The StreamFileReader read() call reads just a single chunk from the
input stream on each call, instead of reading as many bytes as possible.
3663: update test_file_reader unit test

Because StreamFileReader.read() calls are now aligned on block
boundaries, the unit test needs to take that into account when testing
the results of individual reads.
Merge branch '3663-collection-reader-performance'

Closes #3663.