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.
Completed patch searching for rust docs
Made temporary changes to include multiple keywords in rustdoc search

Implemented search based on multiple keywords

Added some commenting and house cleaning

Added path searching to rustdoc
Update .po and strip down untranslated entries.

This work is done by execute these commands manually:

$ po4a --copyright-holder="The Rust Project Developers" \
    --package-name="Rust" \
    --package-version="0.10-pre" \
    -M UTF-8 -L UTF-8 \
    doc/po4a.conf
$ for f in doc/po/**/*.po; do
>   msgattrib --translated $f -o $f.strip
>   if [ -e $f.strip ]; then
>       mv $f.strip $f
>   else
>       rm $f
>   fi
> done

It should be managed by the build system automatically to use in our
translation workflow, but I've not yet done that.

Signed-off-by: OGINO Masanori <masanori.ogino@gmail.com>
Add notes for translators.

Signed-off-by: OGINO Masanori <masanori.ogino@gmail.com>
Note that translation workflow is WIP now.

Signed-off-by: OGINO Masanori <masanori.ogino@gmail.com>
renamed empty() to is_empty()
auto merge of #11438 : b1nd/rust/rust-doc, r=alexcrichton

cc @cmr

Temporary change to issue #10535. Requires significant re-factoring to search completely based on the index paths. For example searching for "File::" in this fix will return no results. Still need to search completely based on path (rather than name's + types) to completely fix. Will continue to work this
Add noalias and noreturn attributes in more cases.
auto merge of #11507 : omasanori/rust/reduce-po, r=alexcrichton

This work is done by execute these commands manually:

    $ po4a --copyright-holders="The Rust Project Developers" \
        --package-name="Rust" \
        --package-version="0.10-pre" \
        -M UTF-8 -L UTF-8 \
        doc/po4a.conf
    $ for f in doc/po/**/*.po; do
    >   msgattrib --untranslated $f -o $f.strip
    >   if [ -e $f.strip ]; then
    >       mv $f.strip $f
    >   else
    >       rm $f
    >   fi
    > done

It should be managed by the build system automatically to use in our
translation workflow, but I've not yet done that.

At least one mostly-translated (over 80% translation rate) document is needed to test the translation workflow, so I'll working on Japanese translation.
Fix the representation of C void pointers in LLVM IR

Currently, we have c_void defined to be represented as an empty struct,
but LLVM expects C's void* to be represented as i8*. That means we
currently generate code in which LLVM doesn't recognize malloc() and
free() and can't apply certain optimization that would remove calls to
those functions.