Add slice::MutableCloneableVector to the prelude

Every other trait in slice is in the prelude, so it makes sense to
provide MutableCloneableVector as well.
Update rust.vim for the latest prelude/keywords
vim: Handle box expressions specially

Attempt to highlight the placement expression in a `box (expr) foo`
expression. Also treat GC as a keyword within the placement expression.

This doesn't work correctly for arbitrary expressions. Notably, this
makes no attempt at balancing delimiters. I believe handling that will
require rewriting the syntax rules to add a region for every pair of
delimiters. That may be a desirable thing to do in the end, because we
can then rewrite our indent rules based on the syntax and get rid of
cindent(), but for the time being, we'll just live with the limitation.
syntax: Parse global paths in patterns

Closes #6449
rustc: Prevant an out of bounds access in typeck

Closes #7092
rustc: Fix a dynamic borrow error in resolve

Closes #8208
Closes #10980
test: Add a test for fixed issue #10763

Closes #10763
test: Add test for fixed issue #11736

Closes #11736
test: Add a test for fixed issue #11844

Closes #11844
rustc: Avoid out of bounds in check_match

Closes #12116
rustc: Avoid an unwrap() in check_match

Closes #12369
test: Add a test for fixed issue #12567

Closes #12567
test: Add test for fixed issue #12796

Doesn't close #12796 because the error message is awful.
rustc: Turn a Box ICE into an error

Closes #14092
rustc: Fix an ICE with box-placement syntax

Closes #14084
Add examples for edge cases of str.split/str.splitn

In particular, show examples for splitting the empty string and using `splitn`
with a count of 0.

Fix #14222.
migrate from `exchange_malloc` to `allocate`

This is now only used internally by the compiler.
alter `exchange_free` for sized deallocation

The support for sized deallocation is nearly complete. The only known
missing pieces are `Box<str>`, `Box<[T]>` and `proc`.
rustdoc: Show types for traits across crates

Right now, when you look in the "Implementors" section for traits, you only see
implementors within that crate. This commit modifies that section to include
implementors from neighboring crates as well.

For example, the Container trait currently says that it is only implemented by
strings and slices, but it is in fact implemented by nearly all containers.

Implementation-wise, this change generates an "implementors cache" similarly to
the search index where each crate will append implementors to the files. When
the page for a trait is loaded, it will load its specific cache file, rendering
links for all upstream types which implement the trait.
auto merge of #14307 : kballard/rust/vim_prelude_mutablecloneablevector, r=cmr

Add slice::MutableCloneableVector to the prelude. It's the only slice
trait that's currently missing.

Update rust.vim to match the latest prelude and current set of keywords.
Also teach it to handle box placement expressions specially.