[SPARK-2429] [MLlib] Hierarchical Implementation of KMeans

I want to add a divisive hierarchical clustering algorithm implementation to MLlib. I don't support distance metrics other Euclidean distance metric yet. It would be nice to support it at other issue.
Could you review it?

Thanks!

I see a number of RDDs cached in the code, but nothing unpersisted. Is it possible to unpersist them at some point here when they are definitely no longer needed?