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

Right masks and left masks are different. But I was able to generate both of them as you suggested. 
        `left_mask = np.tril(np.ones((tri_size, tri_size), dtype=int))[:, 1:]`
        `right_mask = np.triu(np.ones((tri_size, tri_size), dtype=int))[:, :-1]`
Now vectorized `packbits` can be used.