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
Fix failing test
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.
Removed unnecessary check from build.rs
auto merge of #6348 : sstewartgallus/rust/incoming, r=brson

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.
libsyntax: Remove `extern mod foo { ... }` from the language.
librustc: Make `self` and `static` into keywords
libsyntax: Tighten up expressions in patterns to only allow identifiers or literals (possibly with a minus).

This had very minimal fallout.
libstd: Fix merge fallout.
actually fix failing test
auto merge of #6400 : cmr/rust/remove_useless_import_error, r=thestinger

Every unresolved import is reported. An additional error message isn't useful
and obscures (imo) the real errors: I need to take it into account when
looking at the error count.
Add vec.rs each2_mut function
Add vec.rs each2_mut testsuite
auto merge of #6438 : alexcrichton/rust/issue-5387, r=thestinger

Instead link against the built libraries and directly invoke those.

Closes #5387
Better error for some unresolved imports

When trying to import nonexistent items from existing modules, specify that
that is what happened, rather than just reporting "unresolved name".
Correct #[always_inline] -> #[inline(always)] and __attribute((...)) -> __attribute__((...)).
auto merge of #6447 : luqmana/rust/6446, r=thestinger

#6446
doc: document the #[deriving] attribute.

Closes #4916.