Add @Spell clusters to Vim syntax file

Add @Spell clusters to Vim syntax highlighting file to do spell checking
only inside comments and strings
Introduced a chapter that describes how to perform callbacks from C to Rust
Further details on channel idea
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.
doc: Boxes diagram shows enum value inside box.
doc: add note below diagram about memory layout.
Don't run 'ar s' on OSX

Apparently this isn't necessary, and it's just causing problems.

Closes #11162
Forbid coercing unsafe functions to closures

Closes #9582
Fixed bug when initialising bitv from bool=true
Add a generic power function

The patch adds a `pow` function for types implementing `One`, `Mul` and
`Clone` trait.

The patch also renames f32 and f64 pow into powf in order to still have
a way to easily have float powers. It uses llvms intrinsics.

The pow implementation for all num types uses the exponentiation by
square.

Fixes bug #11499
syntax::ext: replace span_fatal with span_err in many places.

This means that compilation continues for longer, and so we can see more
errors per compile. This is mildly more user-friendly because it stops
users having to run rustc n times to see n macro errors: just run it
once to see all of them.
Tweak the interface of std::io

* Reexport io::mem and io::buffered structs directly under io, make mem/buffered
  private modules
* Remove with_mem_writer
* Remove DEFAULT_CAPACITY and use DEFAULT_BUF_SIZE (in io::buffered)
Fixup in guide-testing.md

Added back-quotes around #[cfg(test)] which was otherwise
being interpreted as starting a header
doc: fix version stamp for TeX files

This fixes a regression introduced in
3d57b240ab1fd038b3a41fe2042dc9a0544ea53e.
Elaborate manual on matching (dereference patterns, lvalue/rvalue matching)

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
doc: fix rust.md fallout
test: Add the ability to force a host target

The new macro loading infrastructure needs the ability to force a
procedural-macro crate to be built with the host architecture rather than the
target architecture (because the compiler is just about to dlopen it).
auto merge of #11598 : alexcrichton/rust/io-export, r=brson

* Reexport io::mem and io::buffered structs directly under io, make mem/buffered
  private modules
* Remove with_mem_writer
* Remove DEFAULT_CAPACITY and use DEFAULT_BUF_SIZE (in io::buffered)

cc #11119