librustc: Accept type aliases for structures in structure literals and
structure patterns.

Closes #4508.
Strip empty strings from link args

Closes #15487
auto merge of #15502 : sfackler/rust/link_args_spaces, r=alexcrichton

Closes #15487
librustc (RFC #34): Implement the new `Index` and `IndexMut` traits.

This will break code that used the old `Index` trait. Change this code
to use the new `Index` traits. For reference, here are their signatures:

    pub trait Index<Index,Result> {
        fn index<'a>(&'a self, index: &Index) -> &'a Result;
    }
    pub trait IndexMut<Index,Result> {
        fn index_mut<'a>(&'a mut self, index: &Index) -> &'a mut Result;
    }

Closes #6515.

[breaking-change]
auto merge of #15440 : pcwalton/rust/struct-aliases, r=brson

Closes #4508.

r? @nick29581
auto merge of #15394 : pcwalton/rust/new-index-traits, r=nick29581

This will break code that used the old `Index` trait. Change this code
to use the new `Index` traits. For reference, here are their signatures:

    pub trait Index<Index,Result> {
        fn index<'a>(&'a self, index: &Index) -> &'a Result;
    }
    pub trait IndexMut<Index,Result> {
        fn index_mut<'a>(&'a mut self, index: &Index) -> &'a mut Result;
    }

Closes #6515.

[breaking-change]

r? @nick29581
Move llvm bindings to their own crate
Extract librustc_back from librustc
rustc: Invert some rpath dependencies
Extract rpath to rustc_back::rpath
rustc: Invert some archive deps
rustc: Move ArchiveRO to rustc_llvm

It is a wrapper around LLVM.
rustc: Move archive to rustc_back
rustc_back: Update crate docs

Indicate that anything that can be extracted here should and that things with
syntax deps should be split out someday.
rustc: Move util::fs to rustc_back
rustc: Move util::sha2 to rustc_back
rustc_llvm: Remove an unnecessary workaround

Just some leftover junk from extracting llvm.
rustc_llvm: Remove the inner llvm module

This makes it much saner for clients to use the library since
they don't have to worry about shadowing one llvm with another.