ENH cut MiniBatchKMeans memory usage in half for large n_clusters

Also, changed logging message to reflect the (public) class that is logging,
not the (private) function.

New Cython code lives in utils.sparsefuncs, because it may prove more
generally useful.