Support (more) efficient integer indexing.

If a feature uses integer keys, then `struct.pack` is called so
that a minimal number of bytes is used for storage.

The next step is to actually use integers in the table schema so
that a `kvlayer` backend can take advantage of primitive int types
if possible.