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

Computing values to store in the cache happens only once. Moreover, even if we compare computing times of these two methods, `int("".join([digits[y] for y in bit_array])` is still faster:1.79 µs. 'test = np.packbits(bit_array); test[0]*(2**24)+test[1]*(2**16)+test[2]*(2**8)+test[3]` takes 10.9 µs in average.