[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.  
We need to perform reduceByKey on both syn0 and syn1 and we have different updated keys  for syn0 and syn1. To perform reduceByKey of syn0 and syn1 together, we need to have a unique key and one way to achieve this is to treat i + vocabSize as the key for syn1(i). Then after we collect, we need to slice to update syn0Global and syn1Global.  Any better idea?