ENH: Implemented LSH forest
TST tests for LSHForest
ENH Added radius_neighbors method to LSHForest.
MAINT refactor LSH forest code

Removed _do_hash function.
The functionality of _do_hash is done within the _create_tree function as
a hashing function is generated for each tree and it doesn't need a separate
function.

Added _convert_to_hash function.
This will be used in the queries and insertions to convert the data point
into the integer represented by the binary hash.

Updated _generate_masks to work with cached hashes.

Changed the insert function to accpet a batch of data points(a 2D array).
Now trees and original indices are stored in lists. Tests for insert and fit
functions have been updated.

Changed safe_asarray to check_arrary.
Updated docstrings and tests.
in fit, kneighbors and radius methods, None type is not checked because
it is not an expected input.
Used bisect in _find_matching_indices method.
Removed cached hash and replaced with numpy packbits.
Updated lsh_forest and test_lsh_forest.
Updated docstrings for tests.
DOC Added example for LSHForest.
FIX Updated tests. renamed lsh_forest to approximate.
DOC Updated the example.
Updated the compute distance function to use row_norms.
COSMIT pep8 LSH code
DOC Updated the document of neighbors module.
FIX Completed tests for missed lines.
DOC editing for LSH forest narrative documentation
FIX Updated examples
Removed redundant ran_seed from GaussianRandomProjection Initialization.
Updated Approximate nearest neighbors in neighbors.rst
Inlined generate_hash into create_tree in LSHForest.