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

For the sake of minimising the work necessary to merge this, I have changed my mind; we can leave a rewrite of this code till later, as currently there are no operations that should be *broken* by this quirky behaviour, although I still think it's a bad idea to leave it in the code in the long term.

Where I found it problematic was in trying to rewrite the function to use only two lookups in `bit_string_array`. In doing so you have to have a function that just calculates the shared prefix length of two ints, which is of course byte-order dependent. I ran into trouble.

So I think what we need are:
* tests of this private method that confirm it does what it is meant to, whether the arrays passed in are of dtype `'>u4'` or of `'<u4'`.
* a comment pointing to the numpy issue

(If you'd rather go down the string representation path, which again benefits from allowing a variable hash size and discarding the masks arrays, this is still an option, and I'm happy to submit a patch for the code, but tests are still needed.)