Add @Spell clusters to Vim syntax file

Add @Spell clusters to Vim syntax highlighting file to do spell checking
only inside comments and strings
added empty() to Peekable
Introduced a chapter that describes how to perform callbacks from C to Rust
Further details on channel idea
Update guide-ffi.md

Simplified the first examples to demonstrate callbacks without other threads involved and shortened the elaboration about async callbacks.
extra::ebml: Make reader::Res public

Since reader::vuint_at() returns a result of type reader::Res it makes sense
to make it public.

Due to rust's current behavior of externally referenced private structures,
https://github.com/mozilla/rust/issues/10573, you could still use the result and
assign it to a variable if you let the compiler do the type assignment,
but you could not explicitly annotate a variable to hold a reader::Res.
extra::ebml: Add unit test for vuint_at()
ebml::extra: Optimize reader::vuint_at()

Use a lookup table, SHIFT_MASK_TABLE, that for every possible four
bit prefix holds the number of times the value should be right shifted and what
the right shifted value should be masked with. This way we can get rid of the
branches which in my testing gives approximately a 2x speedup.
renamed empty() to is_empty()
Flag failure functions as inline(never)

The failure functions are generic, meaning they're candidates for getting
inlined across crates. This has been happening, leading to monstrosities like
that found in #11549. I have verified that the codegen is *much* better now that
we're not inlining the failure path (the slow path).
register snapshots
remove the concept of managed-unique from libstd

Closes #11545
Revert "show options for -W help and -W". Fixes #11458.

This reverts commit 1009c21ad7b1db366a5c600946652cc490598ec1.
Use the least significant beat to determine if int/uint is even
libsyntax: Remove the obsolete ability to parse from substrings.

This was used by the quasiquoter.
Allow more "error" values in try_recv()

This should allow callers to know whether the channel was empty or disconnected
without having to block.

Closes #11087
fixup! ebml::extra: Optimize reader::vuint_at()
auto merge of #11112 : alexcrichton/rust/issue-11087, r=brson

This should allow callers to know whether the channel was empty or disconnected
without having to block.

Closes #11087
path: Fix joining Windows path when the receiver is "C:"

WindowsPath::new("C:").join("a") produces r"C:\a". This is incorrect.
It should produce "C:a".
auto merge of #11550 : alexcrichton/rust/noinline, r=thestinger

The failure functions are generic, meaning they're candidates for getting
inlined across crates. This has been happening, leading to monstrosities like
that found in #11549. I have verified that the codegen is *much* better now that
we're not inlining the failure path (the slow path).