String guide improvements

A few steps toward https://github.com/rust-lang/rust/issues/15994
Note that this is giving `&str`, not `char`, since a single visible 'character' (a grapheme) can consist of multiple `char`s (codepoints).