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.


I would format as:
```
var gaussians = (0 until k).map{ i =>
  (1.0 / k, 
    vectorMean(samples.slice(i * nSamples, (i + 1) * nSamples)),
    initCovariance(samples.slice(i * nSamples, (i + 1) * nSamples)))
}.toArray
```
(indentation + ending the first line with "=>")