Update the module-level documentation for c_str
Removed use of alloc::libc_alloc

Following the changes in Rust libraries.
Split off CStrBuf

To make explicit the operations that are O(N) over the string length,
CStrBuf is provided as a low-level wrapper, with an explicit promotion
into CString at the cost of a libc::strlen() call. CString for its
part gets a pre-computed length member.
Implement Eq and PartialOrd for CStrBuf

The comparisons do not necessarily scan to the end of the string,
and in the worst case the strings need to be read all over
even if the lengths are equal. So the performance benefit of a
pre-computed length is not clear-cut there.
Implement Ord for CStrBuf and CString

The order is total, so why not.
Test .into_c_str()