Str from bytes API cleanup, attempt 2

This is an updated version of #7039, where I'm updating the bytes-to-str functions. This is the first pull request of a couple so it'll be easier to review.

The major features renames `str::from_bytes*` to `str::from_utf8*` to make it clear that the bytes must be utf8 encoded. Second, I've made `str::from_bytes` consume the input value, and added `str::from_utf8_slice*` to go from `&[u8]` into `&str`.

Finally, I've changed vec::bytes::memcmp to work with `&[u8]`, and did some minor cleanup of code.