rustc: remove some dead functions
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.
auto merge of #7996 : erickt/rust/cleanup-strs, r=erickt

This is a cleanup pull request that does:

* removes `os::as_c_charp`
* moves `str::as_buf` and `str::as_c_str` into `StrSlice`
* converts some functions from `StrSlice::as_buf` to `StrSlice::as_c_str`
* renames `StrSlice::as_buf` to `StrSlice::as_imm_buf` (and adds `StrSlice::as_mut_buf` to match `vec.rs`.
* renames `UniqueStr::as_bytes_with_null_consume` to `UniqueStr::to_bytes`
* and other misc cleanups and minor optimizations