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