[MRG] Locality Sensitive Hashing for approximate nearest neighbor search

New PR created from #3304
Also assert `np.ptp(accuracies) > 0`. Including this assertion would have caught the random seed bug!