Modern optimization and scaling laws for k-means clustering