Improve region free list handling (#56314)
The main ideas are:
- Move free regions exceeding ephemeral / UOH budgets to a list of regions to be decommited.
- In SVR GC, distribute the remaining free regions evenly across heaps.
- Decommit extra free regions right away (in WKS) or gradually on a GC thread (in SVR).
- Put free regions exceeding the standard size for UOH on a global list for "free huge regions".
- When we have choice which regions to decommit, we pick the ones with the highest addresses to reduce address space fragmentation.