Previously multiple streams could share the same base stream. This meant that you couldn't alternate between streams. If you read from one stream, the state of other streams sharing the same base stream would be messed up and would silently return bad data.
This commit introduces a SharedStream class that allows multiple SharedStreams to share the same base class and not interfere with each other.
I don't know about this. It seems really easy to screw something up.
Allows using the same code for reading the raw nand and reading a normal file system