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.
Remove redundant import error
Add to_str() for HashMaps, and some basic tests as well.
Removed test_hashmap() for the time, being. All tests pass with make check.
All tests, including newly added test_hashmap() pass. The empty Hash Table doesn't need to be mutable.
Remove extra space between key and value.

1. Extra space removed.
2. Using acc.push_str() instead of str::push_str
3. Update test to reflect representation change.
Add str representation for HashSet.
Add test: test_hashset()
Use acc.push_str() instead of str::push_str(..)

Also added some whitespace to enhance readabilty.
Fix errors in test_hashset().

All tests now pass.
rustc: Don't call type_error_message() with ty_err as the expected type

In #6319, several people mentioned they ran into a "computing
fictitious type" ICE in trans. This turns out to be because some
of my recent changes to typeck::check::_match resulted in type errors
getting reported with ty_err as the expected type, which meant the errors
were suppressed, and typechecking incorrectly succeeded (since the errors
weren't recorded).

Changed the error messages in these cases not to use an expected type at all,
rather, printing out a string describing the type that was expected (which is
what the code originally did). The result is a bit repetitive and the
proliferation of error-reporting functions in typeck::infer is a bit annoying,
but I thought it was important to fix this now; more cleanup can happen later.
Fix failing test
Add use declaration for container::Set

All tests pass now.
auto merge of #6427 : catamorphism/rust/issue-6319, r=nikomatsakis

r? @nikomatsakis In #6319, several people mentioned they ran into a "computing
fictitious type" ICE in trans. This turns out to be because some
of my recent changes to typeck::check::_match resulted in type errors
getting reported with ty_err as the expected type, which meant the errors
were suppressed, and typechecking incorrectly succeeded (since the errors
weren't recorded).

Changed the error messages in these cases not to use an expected type at all,
rather, printing out a string describing the type that was expected (which is
what the code originally did). The result is a bit repetitive and the
proliferation of error-reporting functions in typeck::infer is a bit annoying,
but I thought it was important to fix this now; more cleanup can happen later.
auto merge of #6414 : samebchase/rust/experimental, r=graydon

Implemented to_str() for HashMap and HashSet
Added tests.
Minor formatting and stylistic cleanups.
Adds atomic_load, atomic_load_acq, atomic_store, and atomic_store_rel intrinsics.
The default versions (atomic_load and atomic_store) are sequentially consistent.
The atomic_load_acq intrinsic acquires as described in [1].
The atomic_store_rel intrinsic releases as described in [1].

[1]: http://llvm.org/docs/Atomics.html
Don't create subprocesses for the `rust` command

Instead link against the built libraries and directly invoke those.
Make Float::classify matching more clear for f64 and f32
auto merge of #6439 : bjz/rust/float-classify, r=brson
Removed unnecessary check from build.rs