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

I think it is important to provide distinct neighbors than repeating the same as Daniel mentioned. Having the insufficient candidates filled with uniformly selected points from the index is less complicate than filling them randomly. In fact using random set of point does not cohere any more with the approximation technique we use than choosing them uniformly from indices. So I think it is better to use the less complicated way. 

(I've changed `_get_candidates` to fill up candidates uniformly from remaining indices)

Moreover a  situation where candidates should become insufficient is unlikely in most applications because small index sizes are not the general case for ANN.