OPT: Increased the code speed by doing the following.
1. Prevent recomputing centroids.
2. Precompute the squared_norms as much as possible, and remove
call to pairwise_distances_argmin_min
3. Cached centroids_ and squared_norms_ to prevent repeated
iteration across subclusters_
4. Compute the closest_threshold when needed.
5. Remove enumeration of X
6. In plase modification of dot products.