Added euclidean_distances_argmin
Chunking on both arrays in euclidean_distances_argmin

Chunking is now possible on both arrays in euclidean_distances_argmin.
The default chunking scheme has been tested for various array sizes, and
seem to be at least as fast as euclidean_distances + argmin invocation,
while using a lot less memory (around 50 times).

At the same time, check_pairwise_arrays has been improved to not copy
arrays that have a np.float dtype.
Improved tests for euclidean_distances_argmin
Wrote docstring for euclidean_distances_argmin
[BUG] safe_asarray() converts sparse matrices dtype

When called with a dtype kw argument, utils.safe_asarray() would
not change the dtype of a sparse matrix. This has been fixed.

Unit tests have been created for safe_asarray().
Used safe_asrray() in check_pairwise_arrays()

This slightly shortens the code.
Change signature of euclidean_distances_argmin()

THe function is passed the number of chunks instead of the number of
rows in a chunk.

Replaced custom code by gen_even_slices()
Added pairwise_distances_argmin()

Similar to euclidean_distances_argmin(), but compute distances
with any metric from scikit-learn or scipy.
Optimized euclidean case in pairwise_distances_argmin
Removed euclidean_distances_argmin

This specialized case is useless since pairwise_distances_argmin has been
optimized for the euclidean case.
Minor code cleanup
Added gen_batches() to utils

This generator is similar to gen_even_slices(), but takes a slice length
as input instead of a number of slices.
Changed pairwise_distances_argmin API

- Chunking is now performed passing chunk size instead of chunk number.
  Default value has been set to 500 after some benchmarking.
- Dropped the "return_distances" keyword (useless)

Tests have been adapted.
Code cleanup in pairwise_distances_argmin
[DOC] Fixed pairwise_distances_argmin docstring
[API] Renamed pairwise_distances_argmin

The function is now called pairwise_distances_argmin_min.

One of the "batch_size" arguments has been dropped.
[DOC] updated pairwise_distances_argmin_min doc

The updated docstring is slightly ahead of the code. Will be valid
in the next commit.
Performance enhancement for non-euclidean metrics

Non-euclidean metrics passed as a string are now computed more
efficiently by calling pairwise_distances() instead of loop on
every elements in the chunks.

Some docstring updates.