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

IMO, those three lines are not obviously generating a hash function, and most of the time if I know they generate a random hash function, I don't care how exactly. So the indirection is a useful abstraction, if I came to create tree trying to understand what a "tree" is (in this case, a hash function and two arrays).

I agree the cost of the indirection could be reduced; I would do so by placing generate_hash_function right below _create_tree, instead of the other way around. Then if you are reading the latter, and need to see the former, its right in front of you. And maybe deleting the "boiler-platish" docstring on _generate_hash_function. But that's just my opinion.

The argument will be moot when in the future hash families will be pluggable to cater to different distance measures, requiring an indirection anyway. That is, if we ever finish painting the bike shed ;) (joke is only about this issue, not the many other comments).