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.
std: wrap "long" utf8 lines.
std: rename str.as_bytes_with_null_consume to str.to_bytes_with_null
std: remove os::as_c_charp
std: move str::as_buf into StrSlice
std: move StrUtil::as_c_str into StrSlice
std: add test for str::as_c_str
std and extra: use as_c_str instead of as_buf in a couple places

These uses are assuming the strings are null terminated, so it
should be using `as_c_str` instead of `as_buf`
std: rename str.as_buf to as_imm_buf, add str.as_mut_buf
std: remove str::to_owned and str::raw::slice_bytes_owned
std: remove a malloc from os::fill_charp_buf
str: move as_mut_buf into OwnedStr, and make it `self`