ReadByte has special behavior for return value in case of EOF, and in case of
reading data fields it's more clear to indicate an integer of particular size.
From upstream 47a21109c4ef35226fbc89f06c8527db6eaad480
Apparently, this was already done once in b6b8701, but then broken soon after by a merge 22e3a83 (years ago).
From upstream 50800e0e2aca0b7678af4a24bd6322d82261760f
Fixes kq1agdi crashing on big-endian systems, since it tried to allocate
a gigantic amount of memory from MFLUtil::ReadV21() because of the
misread values.
From upstream 5e29a339fc83bf5c06a3a9a3b1c65a2fc4b4e72c
Also includes upstream 427752da015fd93549deef1a31d5e533e5c9319e