coverage.el: minor comments
retrieval: make token match my spec (shorter, hide timestamp)

Use an 8-byte timestamp (not 4), an 8-byte "RT" retrieval token (not
16), and move the timestamp inside the encrypted box (to prevent an
eavesdropper from correlating requests by modeling the agent's clock).

The cost is that we grant advantage to a replaying DoS attacker: they
record and replay an old request (old enough that the server no longer
remembers it), and the server must pubkey-decrypt the request before
seeing the old timestamp and rejecting it. A likely defensive
enhancement would be to cache the tmppub of all decrypted+rejected
requests for some period of time, regardless of the request's internal
timestamp. The attacker then gets one time-wasting decryption per
recorded old message per cache-expiration period. Also consider using a
much coarser timestamp (day number) outside the encrypted box.
docs: add channels.md, enhance mailbox.md
invitation: move petname into the "my private data" record
Invitation.__init__: clean up DB fetch
addressbook: remember an "invitation context"

This currently remembers the invitation codephrase, the time at which we
started the invitation, and the time at which the invitation process
completed. The idea is to give the user some hints to help them remember
the history of their interaction with this correspondent.
schema: "STRING" is not legal SQL, use "VARCHAR" instead

SQLite behaves unfortunately when it doesn't recognize the column type:
it appears to inspect the value being stored to decide upon a type. When
you store a string like "0123", you get back an int/long like 123.
"STRING" is not recognized, so when my hex-encoded tokens happened to
not include any A-F characters, they got mangled on the way back out.
This was pretty rare until I made one of the tokens (RT) shorter, at
which point it started happening maybe 10% of the time and I finally
noticed it.

"VARCHAR" usually requires a max-length (e.g. VARCHAR(100)), but sqlite
appears to be happy without it.
invitation: rename "addressbook_id" to "channel_id"