Use smaller hash codes to go faster and save space.

Before, in the basic and cuckoo hash tables, we were storing full
machine-word-sized hash codes in the table so that we could quickly search a
whole cache line for a key (or a combination of keys) without branching.

It turns out that a full machine word is not really necessary for this
application; switching to a 16-bit key will very slightly increase the number
of hash collisions within buckets (meaning that we'll compare more keys), but
will pay big dividends in terms of:

  * reduced wastage of RAM

  * searching more keys at once, allowing buckets to grow bigger

  * more cache hits on the hash codes array.

Preliminary results suggest a reduction in table overhead of about four bytes
per key-value pair (on 64-bit) and speed increases around the 15% range,
although I need to re-run these results and probably do some tuning afterwards.