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

The implicit nativization of byte order is really messy and hard to debug. I think we need to find a solution that avoids the explicit byte order in `>u4`. (I know, in my ignorance, I suggested `>u4` in the first place.) For example, rather than viewing the packed bits as `>u4`, we could view it as an array of `|S4`, or a 2d array of `u1`s when necessary. (Note that this approach is extensible to a larger hash length, as long as it is divisible by 8.) Annoyingly, bitwise operations like `&`, `|`, `~` are not implemented for `|S4`, but I can quickly write a `longest_matching_prefix(char *a, char *b)` in Cython if you would like.