[SPARK-3097][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.

Author: Liquan Pei <liquanpei@gmail.com>

Closes #1932 from Ishiihara/Word2Vec-improve2 and squashes the following commits:

d5377a9 [Liquan Pei] use syn0Global and syn1Global to represent model
cad2011 [Liquan Pei] bug fix for synModify array out of bound
083aa66 [Liquan Pei] update synGlobal in place and reduce synOut size
9075e1c [Liquan Pei] combine syn0Global and syn1Global to synGlobal
aa2ab36 [Liquan Pei] use reduceByKey to combine models
[SPARK-2842][MLlib]Word2Vec documentation

mengxr
Documentation for Word2Vec

Author: Liquan Pei <liquanpei@gmail.com>

Closes #2003 from Ishiihara/Word2Vec-doc and squashes the following commits:

4ff11d4 [Liquan Pei] minor fix
8d7458f [Liquan Pei] code reformat
6df0dcb [Liquan Pei] add Word2Vec documentation
[MLlib] Remove transform(dataset: RDD[String]) from Word2Vec public API

mengxr
Remove  transform(dataset: RDD[String]) from public API.

Author: Liquan Pei <liquanpei@gmail.com>

Closes #2010 from Ishiihara/Word2Vec-api and squashes the following commits:

17b1031 [Liquan Pei] remove transform(dataset: RDD[String]) from public API
SITUATION: ShuffledDStream run tasks whether dstream has partition items  or not
FIX: ShuffledDStream run tasks only when dstream has partition items
DStream run tasks only when dstream has partition items
DStream run tasks only when dstream has partition items
DStream run tasks only when dstream has partition items
Merge branch 'master' of https://github.com/guowei2/spark
SITUATION: ShuffledDStream run tasks whether dstream has partition items  or not
FIX: ShuffledDStream run tasks only when dstream has partition items
DStream run tasks only when dstream has partition items
Merge branch 'master' of https://github.com/guowei2/spark
SITUATION: ShuffledDStream run tasks whether dstream has partition items  or not
FIX: ShuffledDStream run tasks only when dstream has partition items
DStream run tasks only when dstream has partition items
DStream run tasks only when dstream has partition items
DStream run tasks only when dstream has partition items
SITUATION: ShuffledDStream run tasks whether dstream has partition items  or not
FIX: ShuffledDStream run tasks only when dstream has partition items
DStream run tasks only when dstream has partition items
SITUATION: ShuffledDStream run tasks whether dstream has partition items  or not
FIX: ShuffledDStream run tasks only when dstream has partition items
DStream run tasks only when dstream has partition items
Merge branch 'master' of https://github.com/guowei2/spark