[MRG] Locality Sensitive Hashing for approximate nearest neighbor search

New PR created from #3304
I think `_fit_X`, `_trees` and `_original_indices` should be publicly-documented attributes, i.e. `fit_X_`, `trees_` and `original_indices_`.

The one I'm uncertain about here is `trees_` as this has the potential to be stored with e.g. prefix compression (i.e. as a trie), rather than as an array.