[SPARK-4797] Replace breezeSquaredDistance

This PR replaces slow breezeSquaredDistance. A simple calculation involving 40000 squared distances between the vectors of 20000 dims shows:

* breezeSquaredDistance:  ~12 secs
* This PR: ~10.5 secs


Hi, thanks, but I do not really understand your idea. The indices array in `SparseVector` only keeps the dimensions that have values in that `SparseVector`. BLAS.dot is used to calculate dot product between two vectors. How we use it to compute the intersection between two indices arrays? For example, vector1's indices is `[1, 5, 10]` and vector2's indices is `[5, 6, 7]`. The dot product between them is 1 * 5 + 5 * 6 + 10 * 7 = 105. But it is useless for computing the intersection.