Guide: strings

I decided to change it up a little today and hack out the beginning of the String guide. Strings are different enough in Rust that I think they deserve a specific guide, especially for those who are used to managed languages.

I decided to start with Strings because they get asked about a lot in IRC, and also based on discussions like this one on reddit: http://www.reddit.com/r/rust/comments/2ac390/generic_string_literals/

I blatantly stole bits from our other documentation on Strings. It's a little sparse at current, but I wanted to start somewhere.

I am not exactly sure what should go in "Best Practices," and would like the feedback from the team on this. Specifically due to comments like this one: http://www.reddit.com/r/rust/comments/2ac390/generic_string_literals/citmxb5
@mdinger The pointer + length? That's just part of the value. It lives where the `&str` itself lives. If the `&str` is in a local variable, then it's on the stack. If the `&str` is itself in, say, a `Box<>`, then it's somewhere on the heap. But this isn't really a useful distinction.

When it says that `String` is heap-allocated, it doesn't mean every byte of data associated with the `String` value is on the heap. It means the `String` type manages a heap-allocated buffer, which is where the string data lives. But the `String` type itself is comprised of a length, a capacity, and a pointer. And these three values obey the normal value semantics of any struct.