[SPARK-4614][MLLIB] Slight API changes in Matrix and Matrices

Before we have a full picture of the operators we want to add, it might be safer to hide `Matrix.transposeMultiply` in 1.2.0. Another update we want to change is `Matrix.randn` and `Matrix.rand`, both of which should take a `Random` implementation. Otherwise, it is very likely to produce inconsistent RDDs. I also added some unit tests for matrix factory methods. All APIs are new in 1.2, so there is no incompatible changes.

@brkyvz
Small, but:
`mat.values.toSeq === Seq(1.0, 0.0, 0.0, 1.0)` -> `mat.values === Array(1.0, 0.0, 0.0, 1.0)`
is there any reason the other wouldn't work?