Perform expansion before stripping/building a test harness.

This allows macros to create tests and benchmarks.
Created utility uninhabited type

In this commit I added a useful utility type, named Void, that encapsulates the
doable but annoying job of creating an uninhabited type. As well, a function on
that type, named absurd, was created which is useful for ignoring the result of
matching on that type. No unit tests were created because it is not possible to
create an instance of this type to test the usage of.

This type is useful because it is like NonCopyable in that it can be used to
create a type with special characteristics without special bloat. For instance,
instead of typing pub struct PhantomType { priv contents : () } for each void
type one may want to use one can simply type pub struct PhantomType (Void);.
This type make such special cases much easier to write.
improve MIPS backend and implement segmented stacks
Mark c_vec functions as unsafe again
Use a specialized string interner to reduce the need for owned strings

&str can be turned into @~str on demand, using to_owned(), so for
strings, we can create a specialized interner that accepts &str for
intern() and find() but stores and returns @~str.
testsuite: Add two test cases (one xfailed)
Better error message for certain classes of unresolved imports
Tweak error message

Recommendation of @kud1ing
test: Add two tests for issue #6272.
core: Make intrinsics::init unsafe

as per #3920
core: Make intrinsics::forget unsafe, too
testsuite: Test that init and forget are both unsafe
compile-fail test for new unresolved import error
fix formating and tests
librustc: Fix ICE in core-text resulting from dynamic borrowing. rs=blocking-servo
Move core::task::local_data to core::local_data
Include static methods on traits in reexports.
Implement a new protocol for `for` loops that's much more easily composable
core: Use the new `for` protocol
std: Use the new `for` protocol