std: allow vec::bytes::memcmp to work on slices
std: group the option tests inside a module
minor cleanup
std: rename str::from_bytes{,_with_null,_slice} to from_utf8*
std: add str::from_utf8_slice{,with_null}
std: change std::{from_bytes,from_bytes_with_null} to consume vec
auto merge of #7172 : erickt/rust/str-cleanup, r=erickt

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.