SPARK-4156 [MLLIB] EM algorithm for GMMs

Implementation of Expectation-Maximization for Gaussian Mixture Models.

This is my maiden contribution to Apache Spark, so I apologize now if I have done anything incorrectly; having said that, this work is my own, and I offer it to the project under the project's open source license.


space after `,` (please also update others)

Is it simpler if we only return `RDD[Array[Double]]` and let users compute the best cluster? Another solution is to let `predict` return `RDD[Int]` and add `predictRaw` return `RDD[Array[Double]]`. Btw, this issue could be easily addressed by the new pipeline API, where we can put two columns and compute them on-demand.