[SPARK-4562] [MLlib] speedup vector

This PR change the underline array of DenseVector to numpy.ndarray to avoid the conversion, because most of the users will using numpy.array.

It also improve the serialization of DenseVector.

Before this change:

trial	| trainingTime | 	testTime
-------|--------|-------- 
0	| 5.126 | 	1.786	
1	|2.698	|1.693	

After the change:

trial	| trainingTime |	testTime	
-------|--------|--------
0	|4.692	|0.554	
1	|2.307	|0.525	

This could partially fix the performance regression during test.

It's simpler, but a little bit slower, we can use izip() here (it's faster):
```
$ python -m timeit -s "N=20;a=range(N);b=range(N)" "for i,j in zip(a,b): (i,j)"
100000 loops, best of 3: 2.13 usec per loop
$ python -m timeit -s "N=20;a=range(N);b=range(N)" "for i in range(len(a)): (a[i],b[i])"
1000000 loops, best of 3: 1.88 usec per loop
$ python -m timeit -s "import itertools;N=20;a=range(N);b=range(N)" "for i,j in itertools.izip(a,b): (i,j)"
1000000 loops, best of 3: 1.69 usec per loop
 ```