So this kind of has a hole in it.  Every mutation (put (and maybe remove?)) of the khash has the potential to cause it to resize.  Once it resizes, our iterator will be in a sense invalid, i.e. it will point to some arbitrary point in the keydir pointer array.  While this should be safe, because iirc the new size will always be larger than the old size (I'll check and update in the main comments), it's possible that we'll miss some entries because they've been reshuffled to a point before the iterator in the array.  The safest thing to do is to check at each point where we mutate the keydir and set `keydir->sweep_itr = kh_begin(keydir->entries);` if the size changes.

I am not, at this point, sure that we rely on this correctness, so it may not matter because a later sweep will find and clean up those siblings.  At the least, though, we should spell this assumption out in comments next to this code so that anyone who modifies it later will know that this is something to think about.