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

I don't buy much arguments on design about how things will be in the future. Who knows what will happen, who will have time to improve things. What matters is that the code is easy to read and to maintain now.

Also, I don't think that this is bikesheding, because by making these remarks, I am trying to make the code easier to read. Currently it isn't trivial to follow. I agree that there is some inherent complexity, and that we will not succeed in making it trivial, but anything that can improve readability is a good thing.