Call mark_variable_as_used_mut even after assignment errors

It doesn't actually matter if we call mark_variable_as_used_mut when the
assignment was invalid, since the variable was still used mutably.
Remove an unused return value

The only caller of check_for_assignment_to_restricted_or_frozen_location
isn't checking its return value, so we can remove it and simplify the
internal logic of the function.
Always check assigned loan paths to the top of the path

Currently, check_for_assignment_to_restricted_or_frozen_location bails
out early when looking for loaned base paths when it hits an McDeclared
or McImmutable extension. With the current type system, this is actually
irrelevant, since mutation can only occur given a unique mutable access
path, forcing the same requirement on each base path.
Switch to each_in_scope_loan_affecting_path

The last remaining use of each_in_scope_restriction in
check_for_assignment_to_restricted_or_frozen_location is using the
pattern captured by each_in_scope_loan_affecting_path, so it can be
removed.
Rename check_for_assignment_to_restricted_or_frozen_location

Rename check_for_assignment_to_restricted_or_frozen_location to
check_for_assignment_to_borrowed_path.
auto merge of #14852 : TeXitoi/rust/relicense-shootout-pidigits, r=brson

Everyone agreed.

Related to #14248, close #14718

@brson OK?
rustc: Start accepting `*const T`

This does not yet change the compiler and libraries from `*T` to `*const T` as
it will require a snapshot to do so.

cc #7362
auto merge of #14855 : TeXitoi/rust/relicense-shootout-binarytrees, r=brson

Everyone agreed.

Related to #14248, close #14720

@brson OK?
alloc: Format heap.rs to 80-char max
alloc: Allow disabling jemalloc
alloc: Refactor OOM into a common routine
rustc: Improve span for error about using a method as a field.

libsyntax: ExprField now contains a SpannedIdent rather than Ident.

[breaking-change]
Change prints: @T -> Gc<T> , ~T -> Box<T>

Fixes #14915
Add a Syntastic plugin for Rust.
debuginfo: Correctly handle indirectly recursive types.

So far handling some indirectly recursive types, such as pointer types, has relied on LLVM metadata uniquing in a very implicit way. This could cause some inconsistencies in the debuginfo, and sometimes to hard to trace LLVM assertions.
With this commit unique type IDs and the TypeMap are used to explicitly make sure that no inconsistencies exist, and, if in the future some regression re-introduces one, give a better error message instead of the hard-to-interpret LLVM error.
Move `num_cpus` from `std::rt::util` to `std::os`. Closes #14707
std: Don't fail the task when a Future is dropped

It's a benign failure that no one needs to know about.

Closes #14892
rustc: Don't mark type parameters as exported

This ends up causing the privacy pass to get all confused, and there's nothing
inherently exported about them anyway.

Closes #14933
doc: Fix a link in the FAQ

Closes #14914
Update "use" to "uses" ln186