Use 64-bit FNV1a hash instead of previous multibyte strategy

The previous strategy only works for aligned addresses. I had assumed they
were aligned due to the fact that we copy all key/values, but it seems that
there are some uses where this doesn't happen, resulting in crashes. This
patch does byte-by-byte comparisons, which really should succeed regardless
of data alignment.