[SPARK-4611][MLlib] Implement the efficient vector norm

The vector norm in breeze is implemented by `activeIterator` which is known to be very slow. 
In this PR, an efficient vector norm is implemented, and with this API, `Normalizer` and 
`k-means` have big performance improvement.

Here is the benchmark against mnist8m dataset.

a) `Normalizer`
Before
DenseVector: 68.25secs
SparseVector: 17.01secs

With this PR
DenseVector: 12.71secs
SparseVector: 2.73secs

b) `k-means`
Before
DenseVector: 83.46secs
SparseVector: 61.60secs

With this PR
DenseVector: 70.04secs
SparseVector: 59.05secs

They will generate different bytecode, but I don't see the performance difference. Maybe `DSTORE` to store the `value` to local variable is more expensive than looping up twice. Or maybe JVM just optimizes it internally. I don't have preference.

```scala
sum += values(i) * values(i)
```
will translate to
```
   L24
    LINENUMBER 292 L24
    DLOAD 13
    ALOAD 4
    ILOAD 15
    DALOAD
    ALOAD 4
    ILOAD 15
    DALOAD
    DMUL
    DADD
    DSTORE 13
```
while
```scala
val value = values(i)
sum += value * value
```
will translate to
```
   L24
    LINENUMBER 292 L24
    ALOAD 4
    ILOAD 15
    DALOAD
    DSTORE 16
   L25
    LINENUMBER 293 L25
    DLOAD 13
    DLOAD 16
    DLOAD 16
    DMUL
    DADD
    DSTORE 13
```