hindex: reuse deleted buckets in the same hash chain

Previously, repeated inserts+removals of objects with the same key would result
in long hash chains. This was because the Robin Hood should_steal check is
whether the bucket distance is less than the insertion distance. This is
correct for occupied buckets because we want to avoid needlessly moving the
entire hash chain for every insertion, but for deleted buckets we should check
whether the bucket distance is less than or equal to the insertion distance.
hindex: add torture test

This test does many add/remove operations on a hindex and verifies consistency
after each one. It uses a small key space and high load factor to add stress.

This test would have caught (if anyone inspected the stats output) the bug
fixed in the previous commit.