[MRG] Locality Sensitive Hashing for approximate nearest neighbor search

New PR created from #3304
This is not how `partial_fit` works elsewhere in scikit-learn. It should be possible to never use `fit`. Please fix and test this case. It should be as simple as replacing this `raise` with `return self.fit()`