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.
Small fixes
DOC ASCII only in docstrings

As discussed on the mailing list.
ENH speed up NMF (about 30% off topic extraction runtime)