[WIP] Locality Sensitive Hashing for approximate nearest neighbor search(GSoC)

Alternatively, could use `np.packbits` and get rid of the cache and tuple conversion altogether? I'm not sure which would be faster.