[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.

If we guarantee both `indices` and `values` are numpy arrays, this may be both simpler and faster:

~~~
arr[self.indices] = self.values
~~~