Introducing indexedrdd

The rest of indexed rdd
Adding a few extra comments.
merged with upstream changes
moving indexedrdd to the correct location
Introducing indexedrdd

The rest of indexed rdd
Merging chagnes for IndexedRDD branch
More refactoring and documentating including renaming data to attr for vertex and edge data and eliminating the vertex type.
Trying to resolve issues with closure capture.
Still trying to resolve issues with capture.
Updating unit tests.
Resolved closure capture issues by addressing capture through implicit variables.
Merge branch 'master' of https://github.com/apache/incubator-spark into indexedrdd_graphx
Addressing issue where statistics are not computed correctly
adding indexed reduce by key
IndexedRDD now only supports unique keys
switched to more efficienct implementation of reduce by key
Introducing unique indexedrdd and adding numerous specialized joins
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