Reserve `do` as a keyword

Resolves issue #12157. `do` is hereby reinstated as a keyword; no syntax is
associated with it though. Along the way, a unit test had to be adapted, since
it was using `do` as a method identifier.

Breaking changes:

- Any code using `do` as an identifier will no longer work.
Ignore #[phase] on use view items

Closes #11806
Output the correct library filename with --dep-info

Fixes #12174.
Don't use -Z prefer-dynamic at stage0

This is blocking a snapshot because the stage0 target compiler comes from a
stage1 host compiler. This means that the stage0 compiler doesn't actually
understand the -Z prefer-dynamic flag and is dying as a result.

This will get added back to stage0 after a snapshot.
auto merge of #12170 : aepsil0n/rust/feature/reserve_do_keyword, r=brson

This resolves issue #12157. Does that do it already or is there something else that needs taking care of?  

As a side note, there seems to be some documentation, in which the old existence of the do keyword is explained. The list of keywords is not up-to-date either. But these are certainly separate issues.
Factoring bigint, rational, and complex out of libextra into libnum.

Removed use of globs present in earlier versions of modules.

Fix tutorial.md to reflect `extra::rational` ==> `num::rational`.
auto merge of #12175 : sfackler/rust/phase-use-ignored, r=alexcrichton

It could throw an error but I think it's best to not since `#[phase(..)]` syntax in other places would be silently ignored.

Closes #11806
auto merge of #12154 : pnkfelix/rust/fsk-factor-bigint-and-rat-out-of-libextra, r=alexcrichton

Removed use of globs present in earlier versions of modules.

Fix tutorial.md to reflect `extra::rational` ==> `num::rational`.
auto merge of #12176 : kballard/rust/dep-info-lib-filename, r=alexcrichton

Fixes #12174.
Correct span for self and ExprStruct
auto merge of #12177 : alexcrichton/rust/fix-snapshot, r=kballard

This is blocking a snapshot because the stage0 target compiler comes from a
stage1 host compiler. This means that the stage0 compiler doesn't actually
understand the -Z prefer-dynamic flag and is dying as a result.

This will get added back to stage0 after a snapshot.
auto merge of #12181 : sanxiyn/rust/accurate-span-4, r=alexcrichton
Change `xfail` directives in compiletests to `ignore`, closes #11363
auto merge of #12110 : fhahn/rust/issue-11363-change-xfail, r=alexcrichton

Patch for #11363
Replace `crate` usage with `krate`

This patch replaces all `crate` usage with `krate` before introducing the
new keyword. This ensures that after introducing the keyword, there
won't be any compilation errors.

krate might not be the most expressive substitution for crate but it's a
very close abbreviation for it. `module` was already used in several
places already.
Replace `extern mod` with `extern crate`

This patch adds a new keyword `crate` which is intended to replace mod
in the context of `extern mod` as part of the issue #9880. The patch
doesn't replace all `extern mod` cases since it is necessary to first
push a new snapshot 0.

The implementation could've been less invasive than this. However I
preferred to take this chance to split the `parse_item_foreign_mod`
method and pull the `extern crate` part out of there, hence the new
method `parse_item_foreign_crate`.
Remove obsolete warnings for `extern mod`

This patch gets rid of ObsoleteExternModAttributesInParens and
ObsoleteNamedExternModule since the replacement of `extern mod` with
`extern crate` avoids those cases and raises different errors. Both have
been around for at least a version which makes this a good moment to get
rid of them.