Fix BinaryReader / stream inconsistencies.

BinaryReader internally buffers bytes, meaning that the underlying stream position may not reflect the assumed position.

This adds extension methods for directly reading basic types from a Stream, and removes BinaryReader from the format parsers that incorrectly used BinaryReader.BaseStream.


The VqaReader and R8Reader changes will need to be tested by someone with access to the appropriate assets before merging.