syntax: implement cfg!() which evaluates to true/false where #[cfg] would keep/remove.

Example:

   if cfg!(test) {
      calculation_to_run_only_when_testing();
   }
Add a boatload of Linux x86/x86-64/arm errnos
Relax some atomic barriers. Loosen up all that tension. There, doesn't that feel good?
Document task killing design and relaxed barrier rationale.
Make a forgotten assert in comm be cfg(test)-dependent
Temporary workaround to prevent taskgroup cleanup code from failing without an exception handler.
Make crate tests depend on their extern crates.  Reorder TEST_HOST_CRATES in hopes of exposing future instances of this bug.
std: Implement SingleThreaded spawn mode for newsched
auto merge of #8188 : huonw/rust/cfg-macro, r=pcwalton

Example:

    if cfg!(test) {
       calculation_to_run_only_when_testing();
    }

Closes #8130.
auto merge of #8193 : cmr/rust/linux-errno, r=graydon
auto merge of #8195 : bblum/rust/task-cleanup, r=brson

In the first commit it is obvious why some of the barriers can be changed to ```Relaxed```, but it is not as obvious for the once I changed in ```kill.rs```. The rationale for those is documented as part of the documenting commit.

Also the last commit is a temporary hack to prevent kill signals from being received in taskgroup cleanup code, which could be fixed in a more principled way once the old runtime is gone.
auto merge of #8202 : pnkfelix/rust/fsk-issue8056-make-crates-must-dep-on-subcrates, r=graydon

Reorder TEST_HOST_CRATES in hopes of exposing future instances of this bug.

Fix #8056
auto merge of #8221 : brson/rust/single-threaded, r=graydon

This is the last major runtime feature needed for the transition to the new scheduler.