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.
auto merge of #15511 : brson/rust/extract-rustc-back, r=alexcrichton

This was my weekend project, to start breaking up rustc. It first pulls out LLVM into `rustc_llvm`, then parts of `rustc::back` and `rustc::util` to `rustc_back`. The immediate intent is just to reduce the size of rustc, to reduce memory pressure when building rustc, but this is also a good starting point for further refactoring.

The `rustc_back` crate is definitely misnamed (`rustc::back` was never a very cohesive module anyway) - it's mostly just somewhere to stuff parts of rustc that don't have many deps. Right now it's main dep is `syntax`; it has no dep on `rustc_llvm`.

Some next steps might be to split `rustc_back` into `rustc_util` (with no `syntax` dep), and `rustc_syntax_util` (with a syntax dep); move the rest of `rustc::util` into `rustc_syntax_util`; move all of `rustc::front` to a new crate, `rustc_front`. At that point the refactoring necessary to keep extracting crates will get harder.