Implement `reserve_len` and `reserve_len_exact` for VecMap
clean up `BinaryHeap` code
mk: Build jemalloc with -ffunction-sections

It's quite possible that small programs don't use all of jemalloc, and building
with -ffunction-sections and -fdata-sections allows the linker (via
--gc-sections) to strip out all unused code at link time. This decreases the
size of a "hello world" executable for me from 716K to 482K with no measurable
impact on link time. After this patch jemalloc is still the largest portion of
our hello world executables, but this helps cut down on the size at least
somewhat!
Use the typer in ExprUseVisitor and do not hard code to tcx
Remove the regionck impl of Typer and just use fcx. This requires
modifying fcx to remove type variables where possible, but that's it.
Extend Typer interface to include `expr_ty_adjusted` so that we can
remove another direct dependency on tcx from euv.
Remove `McResult` from the mem-categorization interface.
Move mem-categorization more things to use TYPER for the method origin
Prevent Regex::new() from panicking when a non-AST item is repeated

This bug has also affected the regex! macro, which has caused an ICE
when such an invalid expression is provided.

Fixes #20208.
auto merge of #20218 : alexcrichton/rust/jemalloc-sections, r=luqmana

It's quite possible that small programs don't use all of jemalloc, and building
with -ffunction-sections and -fdata-sections allows the linker (via
--gc-sections) to strip out all unused code at link time. This decreases the
size of a "hello world" executable for me from 716K to 482K with no measurable
impact on link time. After this patch jemalloc is still the largest portion of
our hello world executables, but this helps cut down on the size at least
somewhat!
typeck: boxed closures can't capture by value

closes #19141
closes #20193
closes #20228
Require types to opt-in Sync
Rename `OwnedPtr` to `UniquePtr`
Make Send and Sync traits unsafe
Move RacyCell to `std::comm`

RacyCell is not exactly what we'd like as a final implementation for
this. Therefore, we're moving it under `std::comm` and also making it
private.
Implement `Sync` for some windows sys types
Rename `UniquePtr` to `Unique`

Mostly following the convention in RFC 356
Relax `Arc` bounds don't require Sync+Send

Besides the above making sense, it'll also allow us to make `RacyCell`
private and use UnsafeCell instead.
Keep track of the whole error chain
Make Barrier and Condvar Sync/Send