I'm a bit iffy on the return type, but `Result` would also be a bit weird... The two error cases are `Unterminated` and `InteriorNul(usize)`.
I considered `from_chars(&[c_char])` but this meshes better with `as_bytes_with_nul()` and Rust code in general.
Should there also be a corresponding unsafe `from_bytes_unchecked` variant?