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
Removed remnants of `@mut` and `~mut` from comments and the type system.
Support linking of rlib files in rustpkg
Fix indention
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.
rustc: make error messages containing generic more self-explanatory.

Unsuffixed literals like 1 and 1.1, and free type parameters sometimes
have to be printed in error messages, which ended up with <V0>, <VI0>
and <VF0>. This change puts the words "generic" and "integer"/"float"
into the message so it's not a completely black box.
auto merge of #11513 : huonw/rust/generic-errs, r=alexcrichton

Unsuffixed literals like 1 and 1.1, and free type parameters sometimes
have to be printed in error messages, which ended up with \<V0>, \<VI0>
and \<VF0>. This change puts the words "generic" and "integer"/"float"
into the message so it's not a completely black box.
Better error message for semicolon on the last line of a function

closes #8005
auto merge of #11482 : fhahn/rust/issue-8005-better-error-msg-semi-last-stmt, r=alexcrichton

This is a patch for #8005, thanks @lfairy for the hint.

It seems like `block.expr` is None, if the last line of a function has a semi colon (= it ends with a statement).

@kmcallister does this error message cover the intended use cases? 
I'm not sure about the message, the wording and the span could probably be improved.
libsyntax: Make managed box `@` patterns obsolete
xfail another native test on android (#11419)
auto merge of #11518 : brson/rust/moreandroidxfails, r=alexcrichton
librustc: Remove `@` pointer patterns from the language
auto merge of #11305 : pcwalton/rust/at-patterns, r=pcwalton

r? @nikomatsakis