Add different initialization methods for K-means

Could consider some design patterns here to make the code prettier and
more maintainable...