[WIP][SPARK-1405][MLLIB]Collapsed Gibbs sampling based Latent Dirichlet Allocation

This PR is based on @yinxusen's #476 
The performance test:

Item | value
------------ | -------------
The cluster resource | 36 executors(36 cores, 216g memory)
The corpus size | 196558 document, 7897767 words
The number of iterations | 100
The number of term |  97674
The number of topics |  500
alpha | 0.1
beta | 0.01
The running time |  61.3  minutes
@rxin @mengxr
 `mapPartitions`  方法似乎没有正确清理. 序列化后的`corpus`的RDD和序列化后`topicModel ` broadcast 差不多一样大.
` mapPartitions ` method seems to be no correct cleaning. The serialized  `corpus` RDD and serialized ` topicModel ` broadcast almost as big.
` cat spark.log | grep 'stored as values in memory` =>
```
14/09/13 00:47:59 INFO MemoryStore: Block broadcast_0 stored as values in memory (estimated size 218.2 KB, free 2.8 GB)
14/09/13 00:48:04 INFO MemoryStore: Block broadcast_1 stored as values in memory (estimated size 3.1 KB, free 2.8 GB)
14/09/13 00:48:08 INFO MemoryStore: Block broadcast_2 stored as values in memory (estimated size 3.7 KB, free 2.8 GB)
14/09/13 00:48:20 INFO MemoryStore: Block broadcast_3 stored as values in memory (estimated size 2.4 KB, free 2.8 GB)
14/09/13 00:48:23 INFO MemoryStore: Block broadcast_4 stored as values in memory (estimated size 2.6 KB, free 2.8 GB)
14/09/13 00:48:25 INFO MemoryStore: Block broadcast_5 stored as values in memory (estimated size 2.6 KB, free 2.8 GB)
14/09/13 00:48:25 INFO MemoryStore: Block broadcast_6 stored as values in memory (estimated size 3.1 KB, free 2.8 GB)
14/09/13 00:48:30 INFO MemoryStore: Block broadcast_7 stored as values in memory (estimated size 2.9 KB, free 2.8 GB)
14/09/13 00:48:35 INFO MemoryStore: Block broadcast_8 stored as values in memory (estimated size 3.2 KB, free 2.8 GB)
14/09/13 00:48:44 INFO MemoryStore: Block broadcast_9 stored as values in memory (estimated size 68.6 KB, free 2.8 GB)
14/09/13 00:48:45 INFO MemoryStore: Block broadcast_10 stored as values in memory (estimated size 41.7 KB, free 2.8 GB)
14/09/13 00:49:21 INFO MemoryStore: Block broadcast_11 stored as values in memory (estimated size 197.5 MB, free 2.6 GB)
14/09/13 00:49:24 INFO MemoryStore: Block broadcast_12 stored as values in memory (estimated size 197.7 MB, free 2.3 GB)
14/09/13 00:53:25 INFO MemoryStore: Block broadcast_13 stored as values in memory (estimated size 163.9 MB, free 2.1 GB)
14/09/13 00:53:28 INFO MemoryStore: Block broadcast_14 stored as values in memory (estimated size 164.0 MB, free 1878.0 MB)
14/09/13 00:57:34 INFO MemoryStore: Block broadcast_15 stored as values in memory (estimated size 149.7 MB, free 1658.5 MB)
14/09/13 00:57:36 INFO MemoryStore: Block broadcast_16 stored as values in memory (estimated size 150.0 MB, free 1444.0 MB)
14/09/13 01:01:34 INFO MemoryStore: Block broadcast_17 stored as values in memory (estimated size 141.1 MB, free 1238.3 MB)
14/09/13 01:01:36 INFO MemoryStore: Block broadcast_18 stored as values in memory (estimated size 141.2 MB, free 1036.2 MB)
14/09/13 01:05:12 INFO MemoryStore: Block broadcast_19 stored as values in memory (estimated size 134.5 MB, free 840.7 MB)
14/09/13 01:05:14 INFO MemoryStore: Block broadcast_20 stored as values in memory (estimated size 134.7 MB, free 647.8 MB)
14/09/13 01:08:39 INFO MemoryStore: Block broadcast_21 stored as values in memory (estimated size 218.3 KB, free 589.5 MB)
14/09/13 01:08:39 INFO MemoryStore: Block broadcast_22 stored as values in memory (estimated size 218.3 KB, free 589.2 MB)
14/09/13 01:08:40 INFO MemoryStore: Block broadcast_23 stored as values in memory (estimated size 134.6 MB, free 454.6 MB)
14/09/13 01:08:53 INFO MemoryStore: Block broadcast_24 stored as values in memory (estimated size 129.3 MB, free 267.1 MB)
14/09/13 01:08:55 INFO MemoryStore: Block broadcast_25 stored as values in memory (estimated size 129.4 MB, free 82.0 MB)
```