orthoKMeansTrain will cluster a given data set into the specified number of
clusters. It can use either random initialization of the centroids or use KMeans++ for this.
The K-Means training itself is accelerated by using techniques by Greg Hamerly.
Orthoginality is implemented by using ideas from Cui et al 'Non-redudant multi-view
clustering via orthogonalization'.