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.
testsuite: Add two test cases (one xfailed)
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
librustc: Fix ICE in core-text resulting from dynamic borrowing. rs=blocking-servo
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
syntax: Use the new `for` protocol
rustc: Use the new `for` protocol
rustpkg: Use the new `for` protocol
Fix deriving(IterBytes) to use the new for-loop protocol
librustc: allow destructuring of structs with destructors if the pattern has no moves.

This check only works for `match`s, the checks (incorrectly) do not run for patterns in
`let`s.
Issue number on xfailed test
renamed vec::from_slice to vec::to_owned
Add some positive tests for dtor struct destructuring