[MLlib] [SPARK-2885] DIMSUM: All-pairs similarity

# All-pairs similarity via DIMSUM
Compute all pairs of similar vectors using brute force approach, and also DIMSUM sampling approach.

Laying down some notation: we are looking for all pairs of similar columns in an m x n RowMatrix whose entries are denoted a_ij, with the i’th row denoted r_i and the j’th column denoted c_j. There is an oversampling parameter labeled ɣ that should be set to 4 log(n)/s to get provably correct results (with high probability), where s is the similarity threshold.

The algorithm is stated with a Map and Reduce, with proofs of correctness and efficiency in published papers [1] [2]. The reducer is simply the summation reducer. The mapper is more interesting, and is also the heart of the scheme. As an exercise, you should try to see why in expectation, the map-reduce below outputs cosine similarities.

![dimsumv2](https://cloud.githubusercontent.com/assets/3220351/3807272/d1d9514e-1c62-11e4-9f12-3cfdb1d78b3a.png)

[1] Bosagh-Zadeh, Reza and Carlsson, Gunnar (2013), Dimension Independent Matrix Square using MapReduce, arXiv:1304.1467 http://arxiv.org/abs/1304.1467

[2] Bosagh-Zadeh, Reza and Goel, Ashish (2012), Dimension Independent Similarity Computation, arXiv:1206.2082 http://arxiv.org/abs/1206.2082

# Testing

Tests for all invocations included. 

Added L1 and L2 norm computation to MultivariateStatisticalSummary since it was needed. Added tests for both of them.
For general vectors and matrices, L1 and L2 norms are widely accepted as summaries of a vector and are standard linear algebra: http://en.wikipedia.org/wiki/Norm_(mathematics)#p-norm

`RowMatrix` is a general matrix, not necessarily holding random variable samples in its columns.
By using the names `normL1` and `normL2` it is clear what we're talking about - there is no mistaking what L1 means. Whereas if I were to name them `norm1` and use some averaging, I think the name is ambiguous and requires the user to know we're assuming the matrix holds random variable samples in its columns. No need to confuse the user to make an assumption we don't need.