Dynamic/static arrays: Fix some doc errors

Split out the less controversial fixes from https://github.com/D-Programming-Language/dlang.org/pull/623:

Fix some documentation errors, around dynamic array semantics and static array syntax.
- Add a note about the need for assumeSafeAppend in order to regrow a dynamic array.
- Add examples for static arrays as lvalues (for copying and setting).
- Soften an over-strong claim in ctod.dd.
- Also tweak some heading levels and such.
This is important. "s[] = 3" is the real oddity. My biggest concern about the current state of affairs is the ambiguity of "[]" - in some cases it means "dereference a slice", and in others it means "take a slice of".
"s[] = 3;" means "take a slice of s, and then array-set that slice".
While "d[] = 3;" apparently means "dereference d" - otherwise - if it meant "take a slice of" here - then the many commenters who say "d is a slice" are wrong because "d = 3;" doesn't mean the same thing.