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
Add uninit intrinsic
Replace init() with uninit() where appropriate
Make staged versions of the functions that use uninit
Add intrinsic declaration where I missed them
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.
Refactor representation of bounds to separate out BuiltinBounds into
its own type. Use a bitset to represent built-in bounds. There
are several places in the language where only builtin bounds (aka kinds)
will be accepted, e.g. on closures, destructor type parameters perhaps,
and on trait types.
remove vecs_implicitly_copyable from libstd/libcore
auto merge of #6349 : thestinger/rust/explicit_copy, r=thestinger

I removed some of the copies, but most are just made explicit. The usage in `libcore` was already fixed, but the attribute was only set to warn (not removed).
testsuite: Add two test cases (one xfailed)
auto merge of #6354 : Aatch/rust/uninit-intrinsic, r=graydon

Adds an `uninit` intrinsic.

It's just an empty function, so llvm optimizes it down to nothing.

I changed all of the `init` intrinsic usages to `uninit` where it seemed appropriate to.
Issue the correct deref count for the implicit deref that occurs
as part of an autoslice operation (#6272).

Fixes #6272.
Remove remnants of mutable fields from mem_categorization, borrowck.
Better error message for certain classes of unresolved imports
Tweak error message

Recommendation of @kud1ing
rustc: Add EnumSet tests
auto merge of #6373 : nikomatsakis/rust/issue-6355-perf-regression, r=graydon

Fix #6355 and #6272---we were not giving the correct index to the derefs that occur as part of the rooting process, resulting in extra copies and generally bogus behavior. Haven't quite produced the right test for this, but I thought I'd push the fix in the meantime. Test will follow shortly.

r? @graydon