More metadata cleanup (#3792)
* [runtime] Introduce a new mono_class_init_sizes () function which initializes only the instance fields without initializing fields if possible. Use it in a few places instead of mono_class_init ()/mono_class_setup_fields ().
* [runtime] Simplify mono_class_has_references (), it doesn't have to special case the init_pending case.
* [runtime] Use a TLS list instead of the 'init_pending' flag to detect recursion in mono_class_init ().
* [runtime] Reduce the size of the critical section in mono_class_init () by doing most of the work outside the lock.
* [runtime] Avoid loading cached class info for pointer etc. types.
* [runtime] Reduce the locking inside setup_interface_offsets ().