Keys are [u8] stored in a plain buffer. This diff adds functions to read
and write two kinds of keys - fixed sized (20 bytes) and variant-length
ones. The latter uses VLQ encoding to store key length.
Applications could implement other functions. For example, Mercurial could
use revision numbers instead of offsets to refer to commit hashes.
The read functions will be used in the main radix tree logic.
noob question: why is into() needed here?