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.
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.