Changed LSH.hashmap from a single dict to a list of #bands dicts, to prevent
collisions between different bands (e.g. a hash from band i can now only collide
with another hash from band i), as the MMD book seems to suggest in the second
paragraph of Section 3.4.1:

"We can use the same hash function for all the bands, but we use a separate
bucket array for each band, so columns with the same vector in diﬀerent bands
will not hash to the same bucket."

However after having tested it, I realized how unlikely it would be for an
inter-band collision to occur, simply because the hash functions composing a band
are necessarily different from those of the other bands, and therefore it is almost
useless to guard against it.
Fixed a bug in unionfind.sets() where the set trees were incorrectly assumed to be flat.