Fixes #7377
mk: clean-llvm for cross-compile
configure: Require one of wget or curl.
simplify the exchange allocator

* stop using an atomic counter, this has a significant cost and
  valgrind will already catch these leaks
* remove the extra layer of function calls
* remove the assert of non-null in free, freeing null is well defined
  but throwing a failure from free will not be
* stop initializing the `prev`/`next` pointers
* abort on out-of-memory, failing won't necessarily work
add a contains_managed intrinsic
vec: use contains_managed instead of box header
Remove vec::{rfind, rfind_between, find_between}, replaced by slices and iterator adapators.
Remove vec::[r]position_between, replaced by slices & iterators.
Convert vec::{rposition, rposition_elem, position_elem, contains} to methods.
Convert vec::{reverse, swap} to methods.
etc: update etc/unicode.py for the changes made to std::unicode.
Convert vec::{bsearch, bsearch_elem} to methods.
Convert vec::dedup to a method.
Convert vec::{grow, grow_fn, grow_set} to methods.
Remove vec::{map, mapi, zip_map} and the methods, except for .map, since this
is very common, and the replacement (.iter().transform().collect()) is very
ugly.
stop initializing ref_count in exchange_alloc

this is never read anymore
managed: rm RC_EXCHANGE_UNIQUE constant

this is no longer used, exchange allocations do not set ref_count
stop copying the tydesc in unique box take glue

the only user of the tydesc is ~fn, and it doesn't use this glue code
add a closure_exchange_malloc lang item

this makes the exchange allocation header completely unused, and leaves
it uninitialized
When an impl references an unknown trait, mention what
the trait is called in the error message.