[reflection] Do proper error handling in more cases.

Remove all internal usages of mono_custom_attrs_construct and replace with mono_custom_attrs_construct_by_type
that takes a MonoError.

Introduce mono_custom_attrs_get_attr_checked and replace usage of the old one where it's needed.
[runtime] Change the semantics of mono_error_set_type_load_name to acquire alloc'd strings.

The use case for this function compared to the one that take MonoClass/MonoImage is for lookups
and the failed names are usually freshly alloc'd.

Fix a leak in class.c usage of mono_error_set_type_load_name.
[reflection] Harder the custom attribute code against common type load errors.

Replace silent failures with exceptions.
[runtime] Add regression tests for custom attribute loader errors.
[runtime] Don't leak memory if the custom attribute constructor throws.