Since the binary protocol is so difficult to make backward compatible,
and since I am quick to add new language features, I have decided to
hedge my bets and make "address space" of byte prefixes more sparse for
nodes in the abstract syntax tree. I left a gap of at least 3 bytes
between data types when assigning byte prefixes. With a more sparse
address space, if I add a constructor to a node, I can just assign an
unused byte prefix to that node, that way after adding a new constructor
I can find an unused byte prefix nearby to the other byte prefixes used
for that data type. This makes the parsing tables much smaller as the
byte prefixes that are related to each other are closer together in the
address space.