KEKS can store various primitive scalar types (strings, integers, ...)
and container types (lists, maps, ...). Serialisation process is just
emitting the TLV-like encoding for each item recursively. Possible tag
values:

chr | hex | bin      | vlen |
 .  | 2E  | 00101110 | 0    | [encoding/LIST]'s EOC
 !  | 21  | 00100001 | 0    | [encoding/PRIM] NIL
 f  | 66  | 01100110 | 0    | [encoding/PRIM] FALSE
 t  | 74  | 01110100 | 0    | [encoding/PRIM] TRUE
 L  | 4C  | 01001100 | 0    | [encoding/LIST]
 M  | 4D  | 01001101 | 0    | [encoding/MAP]
 B  | 42  | 01000010 | 3+~  | [encoding/BLOB]
 K  | 4B  | 01001011 | 15   | [encoding/MAGIC]
 T  | 54  | 01010100 | 8    | [encoding/TAI]64
 N  | 4E  | 01001110 | 12   | [encoding/TAI]64N
 A  | 41  | 01000001 | 16   | [encoding/TAI]64NA
 _  | 5F  | 01011111 | 0    | [encoding/FLOAT] NaN
 <  | 3C  | 00111100 | 0    | [encoding/FLOAT] -inf
 >  | 3E  | 00111110 | 0    | [encoding/FLOAT] +inf
 ~  | 7E  | 01111110 | 4+~  | [encoding/FLOAT]
 +  | 2B  | 00101011 | 1+~  | + [encoding/INT]
 -  | 2D  | 00101101 | 1+~  | - [encoding/INT]

    | 80  | 10000000 | 0    | Binary [encoding/String] len=0
    | 81  | 10000001 | 1    | Binary [encoding/String] len=1
    | ... | ...      | ...  | ...
    | BC  | 10111100 | 60   | Binary [encoding/String] len=60
    | BD  | 10111101 | 1+~  | Binary [encoding/String] 8b len
    | BE  | 10111110 | 2+~  | Binary [encoding/String] 16b len
    | BF  | 10111111 | 8+~  | Binary [encoding/String] 64b len

    | C0  | 11000000 | 0    | UTF-8 [encoding/String] len=0
    | C1  | 11000001 | 1    | UTF-8 [encoding/String] len=1
    | ... | ...      | ...  | ...
    | FC  | 11111100 | 60   | UTF-8 [encoding/String] len=60
    | FD  | 11111101 | 1+~  | UTF-8 [encoding/String] len of 8b
    | FE  | 11111110 | 2+~  | UTF-8 [encoding/String] len of 16b
    | FF  | 11111111 | 8+~  | UTF-8 [encoding/String] len of 64b