Define _RUST_STAGEN when building rustrt.

This lets us use #ifdefs to determine which stage of the build we happen
to be in, which is useful in the event we need to make changes to rustrt
that are incompatible with the code generated by stage0.

This should help pave the way to completing #6575, which will likely
require changes to type signatures for spawn_fn & glue_fn in rustrt.
Remove usage of the #[merge] hack with int modules
Remove the #[merge] hack from the parser
auto merge of #6714 : thomaslee/rust/rustrt-stage, r=brson

As discussed with @brson on IRC:

This lets us use #ifdefs to determine which stage of the build we happen
to be in, which is useful in the event we need to make changes to rustrt
that are incompatible with the code generated by a stage0 rustc.

Example of the _RUST_STAGEN flag in action here: https://gist.github.com/thomaslee/5641890

I'm not sure what tests for this change should look like, so please advise if I need to do some work around that.
Make rust {test, run} exit with appropriate code.

Scripts need to know if the tests pass or the program ran correctly.
Remove the get function

Rust is now preferring methods over functions and there is no legacy with ARC
Remove the clone function for the method
Actually filter view_items in blocks
auto merge of #6723 : osaut/rust/arc-remove-get, r=brson

* Remove clone and get functions from ARC.
* Update the tests and bench.
Update the linenoise library
Set the USE_UTF8 flag for linenoise to handle utf8-input
auto merge of #6726 : alexcrichton/rust/filter-blocks, r=z0w0

Among other things, this suppresses a spurious unused import warning in the compiler right now.
auto merge of #6730 : hjr3/rust/exit_code, r=z0w0

Scripts need to know if the tests pass or the program ran correctly.
Fix compilation errors with linenoise
Add basic atomic types
auto merge of #6728 : alexcrichton/rust/update-linenoise, r=Aatch

This updates the bundled linenoise library, and explicitly builds it with UTF8 support. This way rusti correctly handles utf8 characters when doing line operations.

Closes #6681
Ignore the generated docs for libextra
auto merge of #6734 : huonw/rust/gitignore, r=thestinger
Use an enum for keywords and intern them to improve parser performance

Currently, keywords are stored in hashsets that are recreated for every
Parser instance, which is quite expensive since macro expansion creates
lots of them. Additionally, the parser functions that look for a keyword
currently accept a string and have a runtime check to validate that they
actually received a keyword.

By creating an enum for the keywords and inserting them into the
ident interner, we can avoid the creation of the hashsets and get static
checks for the keywords.

For libstd, this cuts the parse+expansion part from ~2.6s to ~1.6s.
auto merge of #6737 : dotdash/rust/static_keywords, r=pcwalton

Currently, keywords are stored in hashsets that are recreated for every
Parser instance, which is quite expensive since macro expansion creates
lots of them. Additionally, the parser functions that look for a keyword
currently accept a string and have a runtime check to validate that they
actually received a keyword.

By creating an enum for the keywords and inserting them into the
ident interner, we can avoid the creation of the hashsets and get static
checks for the keywords.

For libstd, this cuts the parse+expansion part from ~2.6s to ~1.6s.