[SPARK-1390] [WIP] Refactoring of matrices backed by RDDs

This is a WIP for refactoring interfaces for matrices backed by RDDs. It would be better if we have a clear separation of local matrices and those backed by RDDs. Right now, we have 

1. `org.apache.spark.mllib.linalg.SparseMatrix`, which is a wrapper over an RDD of matrix entries, i.e., coordinate list format. 
2. `org.apache.spark.mllib.linalg.TallSkinnyDenseMatrix`, which is a wrapper over RDD[Array[Double]], i.e. row-oriented format. 

We will see naming collision when we introduce local `SparseMatrix`, and the name `TallSkinnyDenseMatrix` is not exact if we switch to `RDD[Vector]` from `RDD[Array[Double]]`. It would be better to have "RDD" in the class name to suggest that operations may trigger jobs. 

The proposed names are (all under `org.apache.spark.mllib.linalg.rdd`): 

1. `RDDMatrix`: trait for matrices backed by one or more RDDs 
2. `CoordinateRDDMatrix`: wrapper of `RDD[(Long, Long, Double)]` 
3. `RowRDDMatrix`: wrapper of `RDD[Vector]` whose rows do not have special ordering 
4. `IndexedRowRDDMatrix`: wrapper of `RDD[(Long, Vector)]` whose rows are associated with indices