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`
std: simplify str::as_imm_buf and vec::as_{imm,mut}_buf
std: inline str::with_capacity and vec::with_capacity
clean up warnings
rustc: remove unused variables
std: make str::append move self

This eliminates a copy and fixes a FIXME.