Generalizing Fair Clustering to Multiple Groups: Algorithms and Applications