Find finds all the blocks of the given size within io.Reader that matches
the hashes provided, and returns a hash -> slice of offsets within reader
map, that produces the same weak hash.
Iterate iterates all available blocks that matches the provided hash, reads
them into buf, and calls the iterator function. The iterator function should
return whether it wishes to continue iterating.