String guide improvements

A few steps toward https://github.com/rust-lang/rust/issues/15994
Hmm...best I can think of uses [this](http://doc.rust-lang.org/std/vec/struct.Vec.html#method.as_ptr) but it's not really that different from what you wrote and you probably don't want to use `unsafe`. I've got a decent explanation but it's really really long and focused on fast random access & `append/prepend` vs `insert/erase` without random access. Mainly C++. I tried to trim it down but it's still 2-3 pages. At best, variable type size is just a footnote at the bottom of a long discussion leading up to it.

```rust
fn main() {
    let v = vec![0i, 1, 2, 3, 4, 5, 6];
    let p = v.as_ptr();
    unsafe {
        // First element
        println!("{}", *p);
        
        // If type `int`, then lets move 3*sizeof::<int>() bytes forward
        println!("Does {} == {}?", v[3], *p.offset(3));

        // Since the sizeof::<int> is always the same, we can get to any
        // element simply by shifting our memory location using offset
        // which simply moves forward i*sizeof::<T>().
    }    
    
    // For strings, we cannot guarantee it will work because sizeof::<T>() varies
    // with each character. An index could be maintained but with potential to
    // be very slow.
    
    // This part doesn't work...though it's not exactly supposed to...
    let s = "Hello world!".as_ptr();
    unsafe {
        println!("{}", *s);
    }
    
}
```