[MRG] Locality Sensitive Hashing for approximate nearest neighbor search

New PR created from #3304
I appreciate that it needs to be its own parameter. But if the user doesn't control `n_neighbors` directly (it is selected by the calling algorithm), the value of `n_candidates` still needs to be reasonable with respect to `n_neighbors`, so it may make sense to allow it to be a function of `n_neighbors`. Not sure. Something to think about, and not to worry about as yet.