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.


This could be cleaner: Instead of
```
(0 until k).map(_ => 1.0 / k).toArray
```
you can write
```
Array.fill[Double](k)(1.0 / k)
```