Note incompatibility with global-whitespace-mode.

See #3994.
Add link_section attribute for static and fn items

This allows for control over the section placement of static, static
mut, and fn items.  One caveat is that if a static and a static mut are
placed in the same section, the static is declared first, and the static
mut is assigned to, the generated program crashes.  For example:

#[link_section=".boot"]
static foo : uint = 0xdeadbeef;

#[link_section=".boot"]
static mut bar : uint = 0xcafebabe;

Declaring bar first would mark .bootdata as writable, preventing the
crash when bar is written to.
Add simple link_section test to exercise it
extra: use deriving more in workcache, switch to treemaps.
extra: access workcache db via RWARC.
extra: change workcache::Work::unwrap to move out of self.
extra: remove a @ in workcache config.
extra: clean up workcache to use & in place of @ most places.
extra: add consume iter to treemap.
extra: switch json from hashmaps to treemaps
extra: give up trying to make more fields of context cloneable, just use ARCs.
auto merge of #7964 : pnkfelix/rust/fsk-issue3994-readme-note, r=huonw

See #3994.
extra: rebase fallout.
auto merge of #7885 : graydon/rust/workcache-fixes-1, r=pcwalton

This just redoes various parts of workcache to support context-cloning (eventually quite crudely, via ARCs), the absence of which was blocking rustpkg from being able to use it. Better versions of this are possible (notably removing the ARCs on everything except the database) but it ought to work well enough for now.
auto merge of #7958 : kemurphy/rust/link-section, r=alexcrichton

This allows for control over the section placement of static, static
mut, and fn items.  One caveat is that if a static and a static mut are
placed in the same section, the static is declared first, and the static
mut is assigned to, the generated program crashes.  For example:

#[link_section=".boot"]
static foo : uint = 0xdeadbeef;

#[link_section=".boot"]
static mut bar : uint = 0xcafebabe;

Declaring bar first would mark .bootdata as writable, preventing the
crash when bar is written to.