Be more careful that we don't underflow zin arrays.

An array with specified size can be initialised with fewer elements than
its size, in which case the remaining elements are zero-initialized.  So
if someone accidentally reduced the number of entries, we wouldn't notice
until someone's recite actually hit those strings and dereferenced a null
pointer.

Instead, leave the array's length unspecified, but statically assert that
it has the length required by the text-generation code.  Then a too-short
list will result in a compile-time error.  Place the assertions with the
text-gen code rather than with the arrays, since the number being
asserted against should reflect the trit calculations and vice versa.