[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


Is this loop logic correct?  What if v1 runs out of indices, but v2 has some left.  You'll need a check for this after the loop.  But a better way to write it might be to have the outer loop check ```kv1 < nnzv1 || kv2 < nnzv2``` and handle 1 non-zero index per iteration of the loop.  (That would also let you have only 1 line updating ```squaredDistance```