add kmeans and use bic cretira to determine number of clusters; add tests to kmeans