Enable build on RHEL and CentOS
Add a third AOT location, alongside ~/.mono/aot-cache and the assembly dir

Unless running in on-demand AOT mode, the AOT runtime will look for an AOT cache alongside the assembly (e.g. /usr/lib/mono/4.5/mscorlib.dll.so).

This patch adds a second search path to the non-on-demand AOT loader, /usr/lib/mono/aot-cache/ARCHITECTURE/path/to/assembly.dll.so

This new structure makes it possible to have more than one Mono architecture on a system, sharing assemblies but not sharing AOT caches (for example, i386 and amd64 Mono on the same system, for different needs)
[eval] Fix delegate; add caching for PrepareEmit

The delegate class did not use the internal cache flag as other type definitions which caused the next evaluation to fail.
[sgen] Fix cementing with concurrent M&S.

Cementing can happen during a concurrent collection when processing
the cardtable.  We use a separate cementing hash during concurrent
collections but we didn't pin objects from there.
[sgen] Fix build with heavy binary protocol.
[sgen] Implement a proper state machine for workers.

What we had previously was an impromptu state machine that was
badly implemented, hard to reason about, and not easily extensible.
[sgen] Remove `workers_marking` - workers are always marking.
[sgen] Stop concurrent worker during concurrent update and nursery collections.

The two collectors stepped on each other's toes.  Specifically, updating the mod union
card table while the worker thread might mark cards in the card table will not work.

The simplest solution for now is to stop the worker thread during concurrent updates
and nursery collections.  In the future we can have the thread help with the nursery
collection.
[sgen] Move heap checks before pinning.
[sgen] Add assertions.
[sgen] Optional check that the concurrent collector doesn't update references.
[sgen] Make `check-mark-bits` also scan nursery objects.
[sgen] When out of memory, finish concurrent with scanning whole nursery.  Fixes #23401.

If we run out of memory during the nursery collection in the finishing collection pause,
there will be late-pinned objects in the nursery: pinned objects that were not pinned
from conservative roots (or cementing).  We need to scan those, too, so in that case
we just walk the nursery and scan all objects.
Freebsd to use Mac NetworkInterface code instead of Linux NetworkInterface code
[proflog] Add counters sampling on profiler shutdown
[proflog] Add counters sampling on runtime initialized
[mdoc] Refreshed the en.expected.importecmadoc files to fix errors after the recent XML changes

The XML work in 661430fd1f052c5589bcd5d116f37b9ee4e27210 and bf39f5aec034800abcfe5e73a63ddd1414cb8078 changed the whitespace handling, so the mdoc test suite failed.
Refreshing the files makes them identical to what MS.NET produces and fixes the mdoc tests.
Fix a problem introduced by e19f539121e0b78b778aa8cf5711ccc1876eb443.
Fix a uninitialized variable warning.
[proflog] Add countersonly parameters which disable event dumping

This is useful in the case of the benchmarking suite because we are only interested in the counters, and they represent a minimal part of the output file size.