When encoding a memberref to a field of a generic instance we must use the type of the GTD. Fixes #10122
* reflection.c (mono_image_get_fieldref_token): We must encode the memberref using the GTD type so
we can distinguish between the following two:
class Foo<T> {
T t;
int t;
}
The above two fields for the instance Foo<int> must be encoded as "!0 Foo<int>:t" and "int Foo<int>:t"
respectively. The CLR does both structural and nominal matching on memberref resolution, so we must be
strict.
The previous fix removed tried to work-around a crash in the generic instance case due to the field
type been null. This now happens because field types are lazily loaded and must always be looked up
using mono_field_get_type. The original code code was not and so broken.