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.
Add FIXME comments regarding issue #11526.
std::trie: remove each_{key,value}_reverse internal iterators.

This are *trivial* to reimplement in terms of each_reverse if that extra
little bit of performance is needed.
std::trie: use unsafe code to give a 3x speed up to the iterator.

This stores the stack of iterators inline (we have a maximum depth with
`uint` keys), and then uses direct pointer offsetting to manipulate it,
in a blazing fast way:

Before:

    bench_iter_large          ... bench:     43187 ns/iter (+/- 3082)
    bench_iter_small          ... bench:       618 ns/iter (+/- 288)

After:

    bench_iter_large          ... bench:     13497 ns/iter (+/- 1575)
    bench_iter_small          ... bench:       220 ns/iter (+/- 91)
auto merge of #11618 : alexcrichton/rust/force-host, r=brson

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).
Fixed typos in comments of librustc backend.
auto merge of #11497 : huonw/rust/trie-internal-iter, r=alexcrichton

This stores the stack of iterators inline (we have a maximum depth with
`uint` keys), and then uses direct pointer offsetting to manipulate it,
in a blazing fast way:

Before:

    bench_iter_large          ... bench:     43187 ns/iter (+/- 3082)
    bench_iter_small          ... bench:       618 ns/iter (+/- 288)

After:

    bench_iter_large          ... bench:     13497 ns/iter (+/- 1575)
    bench_iter_small          ... bench:       220 ns/iter (+/- 91)

Also, removes `.each_{key,value}_reverse` as an offering to
placate the gods of external iterators for my heinous sin of 
attempting to add new internal ones (in a previous version of this
PR).
rustc: Feature gate `log_syntax!`. Closes #11602
auto merge of #11503 : FlaPer87/rust/master, r=huonw

The patch adds the missing pow method for all the implementations of the
Integer trait. This is a small addition that will most likely be
improved by the work happening in #10387.

Fixes #11499
handle zero-size allocations correctly

The `malloc` family of functions may return a null pointer for a
zero-size allocation, which should not be interpreted as an
out-of-memory error.

If the implementation does not return a null pointer, then handling
this will result in memory savings for zero-size types.

This also switches some code to `malloc_raw` in order to maintain a
centralized point for handling out-of-memory in `rt::global_heap`.

Closes #11634
Actually force a / in the path for ext crates

If the library is in the working directory, its path won't have a "/"
which will cause dlopen to search /usr/lib etc. It turns out that Path
auto-normalizes during joins so Path::new(".").join(path) is actually a
no-op.
auto merge of #11086 : metajack/rust/rustpkg-new-crateid-syntax, r=cmr

...arts.

This fixes a bug where new syntax crate IDs would cause rustpkg to fail to
build crates.
Rename iterators for consistency

Rename existing iterators to get rid of the Iterator suffix and to
give them names that better describe the things being iterated over.
xfail shootout-reverse-complement on android
Move macro-crate to run-pass-fulldeps and force-host the aux build
Make WindowsPath::new("C:foo").root_path() return Some("C:")
auto merge of #11001 : DaGenix/rust/iter-renaming, r=alexcrichton

Most Iterators renamed to make their naming more consistent. Most significantly, the Iterator and Iter suffixes have been completely removed.