Remove {As,Into,To}{Option,Either,Result} traits.

Expanded, that is:

- `AsOption`
- `IntoOption`
- `ToOption`
- `AsEither`
- `IntoEither`
- `ToEither`
- `AsResult`
- `IntoResult`
- `ToResult`

These were defined for each other but never *used* anywhere. They are
all trivial and so removal will have negligible effect upon anyone.
`Either` has fallen out of favour (and its implementation of these
traits of dubious semantics), `Option<T>` → `Result<T, ()>` was never
really useful and `Result<T, E>` → `Option<T>` should now be done with
`Result.ok()` (mirrored with `Result.err()` for even more usefulness).

In summary, there's really no point in any of these remaining.
Rename To{Str,Bytes}Consume traits to Into*.

That is:

- `ToStrConsume` → `IntoStr`;
- `ToBytesConsume` → `IntoBytes`.
Correct definition of lvalues, fixes #10890

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
auto merge of #10982 : ezyang/rust/lvalue-def, r=pcwalton

Based off of Niko's proposed definition of lvalues.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Forbid multiple imports in use statements

Closes #10911
Register new snapshots

Understand 'pkgid' in stage0. As a bonus, the snapshot now contains now metadata
(now that those changes have landed), and the snapshot download is half as large
as it used to be!
auto merge of #10919 : alexcrichton/rust/snapshots, r=brson

Understand 'pkgid' in stage0. As a bonus, the snapshot now contains now metadata
(now that those changes have landed), and the snapshot download is half as large
as it used to be!
Move logic for test output generation forward

By performing this logic very late in the build process, it ended up leading to
bugs like those found in #10973 where certain stages of the build process
expected a particular output format which didn't end up being the case. In order
to fix this, the build output generation is moved very early in the build
process to the absolute first thing in phase 2.

Closes #10973
AST Visitor now walks enum discriminant expression
Mark live codes in struct/enum for dead-code pass
Remove workarounds from issue #4404

Closes #10875
auto merge of #10994 : ktt3ja/rust/issue-10956, r=alexcrichton

Types used inside live struct or enum are now marked live.

Fix #10956 and #10993.
debuginfo: Always set column information to zero for source locations.
debuginfo: Clear debug source locations at beginning of functions.
debuginfo: Clear source positions where they'd confuse LLVM otherwise.
debuginfo: Create separate lexical block for function bodies.
debuginfo: Get rid of redundant argument copying with debuginfo activated
debuginfo: Use same behavior as Clang for calculating scope_line parameter when creating function DIEs.
debuginfo: Set the is_local_to_unit attribute of functions correctly
debuginfo: Set correct source position for function calls.