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 is brittle since it fails when the covariance matrix is not full rank.  I'd say any of these is acceptable for now:
* Temporary fix: Check for an exception and printing a warning about the data not being full rank.
* OK fix: Adding a little epsilon smoothing.
* Actual fix: Do a matrix decomposition (like Cholesky) instead of a direct inversion to handle non-full rank matrices.