[MRG] Locality Sensitive Hashing for approximate nearest neighbor search

New PR created from #3304
I think we should also check that the highest accuracy is strictly greater than the lowest, i.e. `np.ptp(accuracies) > 0`