Guide: complex data types

I'm not happy about the hand-waving around `cmp`, but I'm not sure how to get around it.
Also, previously, one element tuple structs could be dereferenced to get their contents, which meant they weren't quite so horrible: `foo(&**self)` rather than `let Name(ref value) = *self; foo(value)`. I assume that part of the old tutorial was written when that feature existed.