[appdomain] Use coop handles for most methods in System.AppDomain (#4286)
* [runtime] Use coop handles for ves_icall_System_AppDomain_GetData
* [runtime] Add mono_string_new_utf16_handle function that returns a MonoStringHandle
* [runtime] Use coop handles for ves_icall_System_AppDomain_InternalGetProcessGuid
* [runtime] Use coop handles for System.AppDomain icalls
- ves_icall_System_AppDomain_InternalIsFinalizingForUnload
- ves_icall_System_AppDomain_InternalPushDomainRef
- ves_icall_System_AppDomain_InternalPushDomainRefByID
(This one is slightly non-trivial because we switch from MonoException to MonoError)
- ves_icall_System_AppDomain_InternalPopDomainRef
- ves_icall_System_AppDomain_InternalSetDomainByID
* [runtime] Use coop handles for ves_icall_System_AppDomain_InternalSetDomain
* [runtime] Use coop handles for ves_icall_System_AppDomain_SetData
* [runtime] Coop handles for some AppDomain icalls
- ves_icall_System_AppDomain_getCurDomain
- ves_icall_System_AppDomain_getFriendlyName
- ves_icall_System_AppDomain_getRootDomain
- ves_icall_System_AppDomain_getSetup
* [coop handles] Add mono_string_handle_length function
* [marshal] Add mono_marshal_xdomain_copy_value_handle
* [coop handles] Add mono_aray_new_full_handle
* [appdomain] Use handles in mono_array_clone_in_domain
* [runtime] Use coop handles for ves_icall_System_AppDomain_createDomain
* [appdomain] Use coop handles for ves_icall_System_AppDomain_InternalUnload