demodeing, un-gc-ing

It looks to me like the string_reader and tt_reader structs are
GC pointers only because they predate the modern borrow system.
This commit leaves the type names string_reader and tt_reader alone
(they still refer to GC-ed pointers), but internally the functions
now use borrowed pointers to refer to these structures. My guess
would be that it's possible to move this change outward and not
use the GCed pointers at all, but that change looks like it could be
a larger one. Actually, I'm delighted at how quick this change was.
lines too long
Fix some bugs with -W unused-imports

1. Don't warn about anything not used in the prelude which is autmoatically
   injected, accomplished with a test that the span is equal to a dummy span.
2. Don't warn about unused imports from the injected intrinsic module,
   accomplished by testing against the name of the imported module
3. If anything is used from a glob import, don't warn about the glob import.
4. If an import imports more than one thing, and none of them are used, only
   issue a warning once

Also updated the unused-imports-warn test to have stricter requirements on
error messages.
Don't warn when imported traits are indeed used
mk: Parameterize tests.mk to the max
mk: Don't check core/std/rustc as part of check-fast

When debugging check-fast it's annoying to wait through core/std
mk: Add output files to tests so they don't rerun unnecessarily
rt: Add rust_try_get_current_task
Make foreign calls work outside of tasks. #4451
Rewrite the exchange allocator to work without an active scheduler. #4457
doc: improvements to version-stamp makefile logic.
librustc: Stop loading enum variant discriminants from memory
Fix sample program to compile in modern rust
auto merge of #4822 : graydon/rust/doc-version-stamp, r=brson

This just improves the version stamp, which was not being regenerated in cached workspaces even when the version changed. Also adds it to the pdf.
auto merge of #4823 : pcwalton/rust/enum-variant-discriminants, r=graydon

r? @graydon
Make ~fn non-copyable, make &fn copyable, split barefn/closure types,
correct handling of moves for struct-record update.

Part of #3678.  Fixes #2828, #3904, #4719.
auto merge of #4810 : nikomatsakis/rust/owned-fn-noncopyable, r=nikomatsakis

Part of #3678.  Fixes #2828, #3904.

r? @brson
auto merge of #4831 : bjz/rust/incoming, r=pcwalton

This is useful for comparing more complex types that include floats.
Change pretty-exact to pp-exact
auto merge of #4814 : brson/rust/check, r=nikomatsakis

r? @nikomatsakis The third commit here is the one that makes the test suite remember which steps have completed successfully.