[collections] Adds `drain`: a way to sneak out the elements while clearing.

It is useful to move all the elements out of some collections without
deallocating the underlying buffer. It came up in IRC, and this patch
implements it as `drain`. This has been discussed as part of RFC 509.

r? @Gankro
cc: @frankmcsherry
Add RingBuf::as_slices as per collections reform v2.

See: https://github.com/rust-lang/rfcs/pull/509

Not sure if this is allowed to land before the RFC. Either way,
it's here for review.

r? @Gankro
cc: @bfops
rustc: Start "stabilizing" some flags

This commit shuffles around some CLI flags of the compiler to some more stable
locations with some renamings. The changes made were:

* The `-v` flag has been repurposes as the "verbose" flag. The version flag has
  been renamed to `-V`.
* The `-h` screen has been split into two parts. Most top-level options (not
  all) show with `-h`, and the remaining options (generally obscure) can be
  shown with `--help -v` which is a "verbose help screen"
* The `-V` flag (version flag now) has lost its argument as it is now requested
  with `rustc -vV` "verbose version".
* The `--emit` option has had its `ir` and `bc` variants renamed to `llvm-ir`
  and `llvm-bc` to emphasize that they are LLVM's IR/bytecode.
* The `--emit` option has grown a new variant, `dep-info`, which subsumes the
  `--dep-info` CLI argument. The `--dep-info` flag is now deprecated.
* The `--parse-only`, `--no-trans`, and `--no-analysis` flags have
  moved behind the `-Z` family of flags.
* The `--debuginfo` and `--opt-level` flags were moved behind the top-level `-C`
  flag.
* The `--print-file-name` and `--print-crate-name` flags were moved behind one
  global `--print` flag which now accepts one of `crate-name`, `file-names`, or
  `sysroot`. This global `--print` flag is intended to serve as a mechanism for
  learning various metadata about the compiler itself.

No warnings are currently enabled to allow tools like Cargo to have time to
migrate to the new flags before spraying warnings to all users.
Remove feature(import_shadowing) from all crates.
rustc: don't allow(non_camel_case_types) in resolve.
middle: resolve: fix inconsistencies around ExportMap and remove the 2 suffix.
rustc: middle: move DefMap from resolve to def.
rustc: middle: move TraitMap from resolve to ty.
rustc: middle: use cheaper Name in resolve::Export instead of String.
rustc: middle: move Export and ExportMap from resolve to def.
rustc: middle: move TraitItemKind from resolve to def.
rustc: middle: move some types from resolve to privacy.
Split resolve from rustc::middle into rustc_resolve.
rustc_resolve: move unused import checking into its own module.
rustc_resolve: move export recording into its own module.
Fix the fallout of removing feature(import_shadowing).
Fix more import_shadowing fallout in collections.
Fix fallout of removing import_shadowing in tests.
auto merge of #19995 : eddyb/rust/split-resolve, r=nikomatsakis

r? @nikomatsakis
auto merge of #19511 : eddyb/rust/no-shadow, r=alexcrichton

r? @erickt