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.
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.
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.
Use backticks to delineate paths/identifiers
auto merge of #6448 : huonw/rust/deriving-doc, r=Aatch

Closes #4916.
Tidy
auto merge of #6437 : Thiez/rust/atomic, r=Aatch

This pull request adds 4 atomic intrinsics to the compiler, in preparation for #5042.

* `atomic_load(src: &int) -> int` performs an atomic sequentially consistent load.
* `atomic_load_acq(src: &int) -> int` performs an atomic acquiring load.
* `atomic_store(dst: &mut int, val: int)` performs an atomic sequentially consistent store.
* `atomic_store_rel(dst: &mut int, val: int)` performs an atomic releasing store.

For more information about the whole acquire/release thing: http://llvm.org/docs/Atomics.html

r?
auto merge of #6443 : cmr/rust/resolution, r=bstrie

When trying to import nonexistent items from existing modules, specify that
that is what happened, rather than just reporting "unresolved name".

Ideally the error would be reported on the span of the import... but I do not see a way to get a span there. Help appreciated :smile:
Update make dependencies of librust