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

I've been trying to understand this function fully. I'm afraid there's a bit of byte order chaos going on here. `bit_string_array` is coming in as `dtype='>u4'`. `query` is `dtype=uint32` (native byte order). This is already a problem.

To add to this, `left_masks` and `right_masks` are `'>u4'` but it appears in numpy 1.8.1 that when you select a single element from such an array (e.g. `left_masks[mid]`) it returns an element with native byte order i.e. `uint32`!! This sounds like it might be a bug in numpy, but I'm not certain.