std: minor cleanup
std: add str.to_c_str()
std: rewrite run::with_{argv,envp,dirp} to copy C strings
std: remove str::NullTerminatedStr
std: cleanup os and str tests
std: add test for str::as_c_str
std: remove str::from_bytes_with_null
extra: make sure time::match_digits does not read past the end of the str
std: replace str::as_c_str with std::c_str
std and rustc: explicitly pass c strings to c functions

When strings lose their trailing null, this pattern will become dangerous:

let foo = "bar";
let foo_ptr: *u8 = &foo[0];

Instead we should use c_strs to handle this correctly.
std: merge str::raw::from_buf and str::raw::from_c_str
std: remove use of cast module from os.
Remove trailing null from strings
Merge remote-tracking branch 'remotes/origin/master' into str-remove-null
std: Update the c_str docs, and support CString not owning the pointer
std: fix a typo where .to_c_str wasn't being called on android
std: c_str should use regions on methods
Merge commit 'd89ff7eef969aee6b493bc846b64d68358fafbcd' into remove-str-trailing-nulls
std: update str.push_byte to work without str trailing nulls
Merge remote-tracking branch 'remotes/origin/master' into remove-str-trailing-nulls