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.
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.
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
Use the libsyntax PkgId parser in Rustpkg, but keep Rustpkg's version smarts.

This fixes a bug where new syntax crate IDs would cause rustpkg to fail to
build crates.
Change some rustpkg tests to use new crate_id syntax.
Warning police.
Simplify std::num::Primitive trait definition

This removes the `Primitive::{bits, bytes, is_signed}` methods and removes the operator trait constraints, for the reasons outlined below:

- The `Primitive::{bits, bytes}` associated functions were originally added to reflect the existing `BITS` and `BYTES` statics included in the numeric modules. These statics are only exist as a workaround for Rust's lack of CTFE, and should probably be deprecated in the future in favor of using the `std::mem::size_of` function (see #11621).

- `Primitive::is_signed` seems to be of little utility and does not seem to be used anywhere in the Rust compiler or libraries. It is also rather ugly to call due to the `Option<Self>` workaround for #8888.

- The operator trait constraints are already covered by the `Num` trait.