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.


Thinking more about this API, I now believe it would be better to have it store an array of weights + an array of MultivariateGaussian instances.  That would require making the MultivariateGaussian API public.

I'll check some other libraries to get a sense of what their MultivariateGaussian APIs look like.  If you're interested, I can let you know what I find so we can make this API change in this PR.  However, if you prefer, I'd be happy to send a follow-up PR which makes this change.  What do you prefer?