Only canonicalise if there is room, and add docs

We could increment SIZE to ensure there would be room, but that would
disadvantage people using kstrings for binary data in power-of-2-sized
blocks.  Instead document that SIZE=KS.l+1 will ensure NUL-termination.

This fixes a bug in the previous version when the l<m invariant does not
hold (kputc_()/etc and manual manipulation only maintain the weaker l<=m);
hattip Rob Davies.
Add kstring_t init/destroy documentation

Ideally these could be provided as ks_init()/ks_destroy(),
but those names are already in use with kstream_t.