Set serialization properties in GraphSuite
Split vTableReplicated into two RDDs

Previously, (vTableReplicated: IndexedRDD[Pid, VertexHashMap[VD]])
stored one hashmap per partition, taking Vid directly to VD.

To take advantage of rxin's new hashmaps (see
rxin/incubator-spark@32a79d6d13be8a03071296d251a3e532bf964cc0), this
commit splits that data structure into two RDDs:

(vTableReplicationMap: IndexedRDD[Pid, VertexIdToIndexMap]) stores a map
per partition from vertex ID to the index where that vertex's attribute
is stored. This index refers to an array in the same partition in
vTableReplicatedValues.

(vTableReplicatedValues: IndexedRDD[Pid, Array[VD]]) stores the vertex
data and is arranged as described above.
Cache msgsByPartition
Use ArrayBuilder instead of ArrayBuffer

ArrayBuilder is specialized for holding primitive VD types.
Merge pull request #26 from ankurdave/split-vTableReplicated

Great work!
This commit accomplishes three goals:

 1) Further simplification of the IndexedRDD operations (eliminating some)
 2) Aggressive reuse of HashMaps
 3) Pipelining join operations within indexedrdd
Switching from Seq to IndexedSeq