Use mktemp for temporary download directory

Using the current directory may not always be appropriate, for example in
the case where it will unnecessarily trigger a backup to be made.

The only risk with this change is that systems might not have a mktemp.
I am not aware of such a system, but have not tested on Windows. It is
working on a basic Ubuntu and OS X installation.
Fall back to hard coded download directory

If mktemp fails, fall back to a hard coded directory, per @nodakai's feedback.
Implement `reserve_len` and `reserve_len_exact` for VecMap
Deprecate `DList::ListInsertion`
Merge branch 'master' into cfg_tmp_dir

Conflicts:
	src/etc/rustup.sh
Better temporary directory name
clean up `BinaryHeap` code
Rename to_ascii_{lower,upper} to to_ascii_{lower,upper}case, per #14401

[breaking-change]
Remove Ascii, AsciiCast, OwnedAsciiCast, AsciiStr, IntoBytes, IntoString.

As a replacement, add is_ascii() to AsciiExt, and implement AsciiExt for u8 and char.

[breaking-change]
std::ascii: Use u8 methods rather than the maps directly.
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
Fix up remaining usage of `to_ascii`.
Fix up remaining usage of `to_ascii`.
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.
typeck: boxed closures can't capture by value

closes #19141
closes #20193
closes #20228
Require types to opt-in Sync