[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

This is an interesting tangent. What happens if you add `@switch`? http://www.scala-lang.org/api/current/index.html#scala.annotation.switch  Bytecode should have instructions for `switch` statements that aren't just conditionals, like `tableswitch`: https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-3.html#jvms-3.10