[Coop] InterlockedCompare/Exchange (object/T) (mono/mono#16873)
* [Coop] InterlockedExchange (object and T), InterlockedCompareExchange (object and T).
- Usually intrinsified.
- Always?
- Avoid coop handles by manually always using ref to object.
- For efficiency on input, and efficiency wrt MonoError.
- For correctness on output (due to aliasing in the wrappers).
- To probably avoid assertion failure in runtime around icall marshaling of generics.
- Unclear on location.
* Balance parens in prints, so they are balanced in the code.
* Reduce local arrays from 16 to auto-sized 1.
* Update and reformat System.Threading.Interlocked signature recognition.
* Rename the generic again to "_T" (or "Generic"?) on the theory
that the aot-runtime.c signature check is too strict/incorrect,
but that if we loosen it, it is not clearly specific to the generic.
* Revise corlib version again.
* Bump API snapshot submodule
Commit migrated from https://github.com/mono/mono/commit/
d49d7b47165b2c629a916a2c3b0fb11067e49151