Refactor libinibin's InibinFile and Loader.

Should probably write a test before merging, because I don't know if my changes broke anything and there's a high chance I've maybe made an off-by-one error or something of the like.
It is guaranteed for the arguments to be evaluated left to right? Aka, the first argument's reader.ReadByte() will happen before the second argument's?