Use slice representation for child crate maps
Use slice representation for module entries in CrateMap

Relaxe lifetime of CrateMap as well.
Use &'self str instead of raw char pointer in ModEntry
Add code for older crate map versions, bumped crate map version number
extra: remove commented out 'X' and 'x' formats

These formats are already covered with 'T' | 'X' in line 571 and 'D' | 'x' in
line 446.
auto merge of #9734 : luisbg/rust/master, r=alexcrichton

These formats are already covered with 'T' | 'X' in line 571 and 'D' | 'x' in
line 446.
remove duplicate statement
testsuite: Two tests for fixed bugs

Closes #7246
Closes #7573
auto merge of #9733 : catamorphism/rust/issues-7246-and-7573, r=alexcrichton

r? anybody Closes #7246
Closes #7573
auto merge of #9729 : dwrensha/rust/regionmanip-cleanup, r=catamorphism
docs / rustpkg: Document `rustpkg test` more

Talk about `rustpkg test` in the tutorial, and update its usage message.
Implement feature-gating for the compiler

A few features are now hidden behind various #[feature(...)] directives. These
include struct-like enum variants, glob imports, and macro_rules! invocations.

Closes #9304
Closes #9305
Closes #9306
Closes #9331
rustpkg: Fix fetching remote packages

Closes #9193
auto merge of #9738 : catamorphism/rust/rustpkg-test-docs-need-to-submit, r=alexcrichton

r? anybody Talk about `rustpkg test` in the tutorial, and update its usage message.

@steveklabnik, it would be great if you could look this over :-)
Fix a typo in std::ops documentation
Clearer error message for external trait and type

The old error message implied that external traits could never
be implemented locally.
auto merge of #9682 : skade/rust/clearer-error-message-for-external-type-and-trait, r=alexcrichton

The old error message implied that external traits could never
be implemented locally.
get_crate_map returns an Option
auto merge of #9593 : fhahn/rust/logging-unsafe-removal, r=alexcrichton

This pull request changes to memory layout of the `CrateMap` struct to use static slices instead of raw pointers. Most of the discussion took place [here](https://github.com/fhahn/rust/commit/63b5975efa10af7df3df0a50d8d7f9c8d5bcf9e9#L1R92) .

The memory layout of CrateMap changed, without bumping the version number in the struct. Another, more backward compatible, solution would be to keep the old code and increase the version number in the new struct. On the other hand, the `annihilate_fn` pointer was removed without bumping the version number recently.

At the moment, the stage0 compiler does not use the new memory layout, which would lead the segfaults during stage0 compilation, so I've added a dummy `iter_crate_map` function for stage0, which does nothing. Again, this could be avoided if we'd bump the version number in the struct and keep the old code.

I'd like to use a normal `for` loop [here](https://github.com/fhahn/rust/compare/logging-unsafe-removal?expand=1#L1R109), 

        for child in children.iter() {
            do_iter_crate_map(child, |x| f(x), visited);
        }


but for some reason this only yields `error: unresolved enum variant, struct or const 'Some'` and I have no idea why.
auto merge of #9741 : catamorphism/rust/rustpkg-remotes, r=cmr

r? @cmr Closes #9193