BinaryReader does not own the stream object. so we should not have a
method that creates one (string) also remove stream() as its the same as
the constructor.
Wraps any seekable StreamInterface and exposes a fixed byte range
(start offset + length) as an independent stream. Useful for passing
a subsection of a resource to BinaryReader without copying bytes.