An input stream whose internal data is in blocks, the format of each block is
(boolean isLastBlock, int blockLength, sequence of blockLength bytes)
All blocks except for the last block must have isLastBlock set to false.
The last block must have isLastBlock set to true.
This class implements an input stream whose length is limited, yet
the creator (writer) of the stream does not need to know the entire length
before creating it.