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.
Add a test case for #10122.