Guide: complex data types

I'm not happy about the hand-waving around `cmp`, but I'm not sure how to get around it.
Meh, real structs work *exactly* the same, and are far more ergonomic when trying to read the internal value. I think us isolating single-element *tuple* structs with a special name is a bit of a mistake... I *hate* seeing `let Name(ref value) = *self;` everywhere. :(

(Also, the 'newtype' name is misleading for people with Haskell experience: in Haskell `newtype`s actually differ in representation to the "normal" equivalent (they are unboxed, i.e. don't add an extra layer of indirection), while for us, newtypes and normal `struct`s are the same: both are unboxed, no implicit layers of pointers.)