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
Fix warnings in debug printing code

Also, this will only compile now if BITCASK_DEBUG is set.
Fix uninitialized variable

Found by Andrew running Valgrind.
Cleaning up and updating comments
Fix fold start time

The fold code was creating a timestamp *before* the keydir was frozen
and using that to look at a snapshot of the data. This was hidden by the
fact that the snapshot code would give in and give you a closest match
if no entry found for the given timestamp, even if this violated the
snapshot logic. When I cleaned up that logic, this surfaced.

Also, fixing get to return not found in the case an entry for the given
snapshot time was not found.
Merge pull request #106 from basho/eas-multifold-refactor

Refactor of Evan's multifold