Fixed BinaryReader.ReadString to read correctly

Before there was a shortcut, and if the stream didn't return the full number of bytes (perfectly valid behavior), the method would return without doing successive reads.