Refactor of Evan's multifold

This is an attempt to clean up the multifold logic to make it more
maintanable.

* New find_result struct holds the results of a find operation. This
  simplifies the logic of most operations that use a find and later have
  to figure out exactly where things were found, whether they were a
  tombstone, etc.
* Removes the need to malloc temporary entries while manipulating the
  keydir. For this, a new proxy struct was created to hold the values
  of a regular or list entry when it's found.
* Removes the need to malloc temporary entries when looking up stuff
  from the keydir. A new khash operation was added to allow custom hash
  and equal functions to be used, so you can look up from something
  other than a variable length entry.
* Adds locking to iteration now that it can happen while puts are
  updating the entries hash. Found during review of original PR
* Tries to fix unused keydir_copy operation now that entries can be lists
* Removes dubious snapshot finding logic that tries to always return value even if from after the snapshot time