[runtime] Use the image lock in mono_type_from_typespec () instead of the loader lock. Also do most of the work outside the lock.
[runtime] Reorganize mono_class_setup_properties () so most of the work is done outside the loader lock.
[runtime] Reorganize mono_class_setup_events () so most of the work is done outside the loader lock.
[runtime] Reorganize mono_class_has_finalizer () so most of the work is done outside the loader lock.
[runtime] Reorganize mono_class_setup_methods () so most of the work is done outside the loader lock.
[runtime] Move the initialization of class->has_finalize into mono_class_has_finalizer () in most cases.
[runtime] Reorganize mono_class_setup_interfaces () so most of the work is done outside the loader lock.
[runtime] Remove locking from the mono_get_method_constrained_... () functions, its not needed.
[runtime] Reorganize mono_method_get_header () so most of the work is done outside the loader lock.
[runtime] Reorganize mono_method_signature_checked () so most of the work is done outside the loader lock.
[runtime] Remove a missed mono_loader_unlock () from mono_metadata_get_header ().
[runtime] Use the image locks in many places instead of the loader lock.
[runtime] Factor out the nested types computation code from mono_class_get_nested_types () and reorganize it so most of the work is done outside the loader lock.
Bump version to 3.10.