RFC: Relocate and improve c_str

* Move the `c_str` module out of `std` to rid the latter of type
  dependencies on `libc`.
* Split the current `CString` into a low-level type `CStrBuf` and
  a length-aware `CString` to make computation costs explicit.
* Provide custom destructors and purpose-specific, mnemonically named
  constructors.
* Add some methods and trait implementations to make the types more useful.
* Remove the `Clone` implementation due to lack of purpose.

# Prior issues

* rust-lang/rust#18125
* rust-lang/rust#18117
* rust-lang/rust#16772