This also refactors getting struct field offsets into two iterators. This will be useful when implementing bitCast at comptime on structs.