[MLlib] Word2Vec performance improvement

@mengxr Please review the code. Adding weights in reduceByKey soon. 

Only output model entry for words appeared in the partition before merging and use reduceByKey to combine model. In general, this implementation is 30s or so faster than implementation using big array.  
Do we want to keep `syn0` and `syn1` in order to have an easy mapping from/to the original C implementation? It reduces the code maintenance cost.