[MRG+1] LSHForest: sparse support and vectorised _find_longest_prefix_match

This adds sparse matrix support to `LSHForest`, vectorises calls to `hasher.transform`, and vectorises `_find_longest_prefix_match` over queries. These seem to speed things up a little, but the benchmark script does not provide very stable timings for me.

Some other query operations cannot be easily vectorised, such as gathering the set of candidates per query (which differ in cardinality). Unvectorised operations make sparse matrix calculations particularly inefficient (because extracting a single row is not especially cheap).
```

In [1]: a = np.arange(100000)

In [2]: %timeit list(a)
100 loops, best of 3: 13.7 ms per loop

In [3]: %timeit list(a.tolist())
100 loops, best of 3: 2.41 ms per loop

In [4]: %timeit set(a)
10 loops, best of 3: 20.4 ms per loop

In [5]: %timeit set(a.tolist())
100 loops, best of 3: 4.9 ms per loop
```