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

Actually this is not ascending order but from closest to farthest. The comments and docstrings should make that more explicit.

Here is the behavior for exact NN with 2 different metrics: one similarity and the other a distance.

```python
>>> from sklearn.neighbors import NearestNeighbors
>>> import numpy as np
>>> data = np.random.RandomState(0).randn(100, 10)
>>> query = np.random.RandomState(0).randn(1, 10)
>>> NearestNeighbors(metric='cosine', algorithm='brute').fit(data).kneighbors(query, return_distance=True)
(array([[ 0.        ,  0.24615683,  0.44762992,  0.45011334,  0.46120289]]), array([[ 0, 84, 97, 94, 11]]))
>>> from pprint import pprint
>>> pprint(NearestNeighbors(metric='cosine', algorithm='brute').fit(data).kneighbors(query, return_distance=True))
(array([[ 0.        ,  0.24615683,  0.44762992,  0.45011334,  0.46120289]]),
 array([[ 0, 84, 97, 94, 11]]))
>>> pprint(NearestNeighbors(metric='euclidean', algorithm='brute').fit(data).kneighbors(query, return_distance=True))
(array([[ 0.        ,  2.53512914,  3.30617605,  3.33220583,  3.43187077]]),
 array([[ 0, 84, 97, 20, 86]]))
```