Guide macros and unsafe

The last two sections of the guide, and a small conclusion. I suck at conclusions.

I also realized I never covered strings, so I'm going to put that section up before we're actually 'done.'
Not fully; it doesn't really highlight (a) that correct `unsafe` code is hard to write and should be an *absolute* last resort (due to the relatively complicated invariants that must hold; the compiler guarantees them outside `unsafe`, but they can easily be broken inside `unsafe`), and (b) that it only adds some more functionality and existing language constructs don't change (e.g. `x[i]` still has bounds checks inside `unsafe`).

When beginners/less-experienced people use `unsafe`, it's often/normally incorrect IME (I haven't measured but I think >50% of the non-FFI `unsafe` code I see from non-experts has subtle (or not-so-subtle) problems, although FFI code is sometimes wrong too); I'm also not particularly confident with `unsafe` code written by experts unless it has tests and has been code-reviewed (including my own).

Also, with some effort one can often achieve non-`unsafe` code that's equally (or more) performant, e.g. https://github.com/rust-lang/rust/pull/15638 started out with `unsafe` but reviewers pushed for safer code and @blake2-ppc responded with style with better & safe implementation. (I've had similar instances, where I wrote some unsafe code but was pushed to write it safely, resulting in nicer, correcter, and performant code.)

(I'm also thinking you could link to that guide for people who want more info.)