Fix undefined behavior of offsetof
Fix undefined behavior of offsetof

The standard offsetof function does not work for classes with base
classes, the workaround which was introduced for new compilers that warn
in that case relies on undefined behaviour because it accesses members
of null objects to get their address.

This patch tries to cleanup any undefined behavior by using a function
to access the member (which is in my opinion much cleaner than casting
an object to a byte pointer and using an offset to access a member).

The heavy lifting is done by the GetMemberHelper class, the only
additional information needed is the type of the member variable,
therefore I had to change every usage of the helper macros and add the
type.

GPUOpen-Drivers/llpc,GPUOpen-Drivers/llpc,googlestadia/llpc,googlestadia/llpc,googlestadia/llpc,GPUOpen-Drivers/llpc,googlestadia/llpc,GPUOpen-Drivers/llpc,googlestadia/llpc,GPUOpen-Drivers/llpc