Guide Redux: Pointers

This is super, super WIP, but I'm going to go get lunch for a while, and figured I'd toss my work up here in case anyone wants to see my work as I do it.

This contains a new introductory section explaining the basics of pointers, and some pitfalls that Rust attempts to solve. I'd be interested in hearing how my explanation is, as well as if this belongs here. Pointers are such a crucial concept, I don't mind having a beginners' section on them in the main docs, even though our main audience is supposed to understand them already. Reasonable people may disagree, however.
Compared to "raw" pointers (which is what people usually consider the un-qualified word "pointer" to refer to), they

* Can't be NULL
* Can't be invalid (they always point to a valid value). This is enforced via the lifetime system.

Smart pointers are also safe, but they are safe by virtue of managing their own allocation, rather than being enforced by the compiler. And they're technically less safe than references, because the allocation (when the smart pointer is created) could fail at runtime, but the creation of a reference can never fail at runtime. Granted, a smart pointer allocation failing is not something you really have to worry about, I'm just trying to forestall any argument that smart pointers are just as safe ;)