Adding ability to access local BitSet and to safely get a value at a given position
This commit makes three changes to the (PrimitiveKey)OpenHashMap

  1) _keySet  --renamed--> keySet
  2) keySet and _values are made externally accessible
  3) added an update function which merges duplicate values
This commit introduces the OpenHashSet and OpenHashMap as indexing primitives.

Large parts of the VertexSetRDD were restructured to take advantage of:

  1) the OpenHashSet as an index map
  2) view based lazy mapValues and mapValuesWithVertices
  3) the cogroup code is currently disabled (since it is not used in any of the tests)

The GraphImpl was updated to also use the OpenHashSet and PrimitiveOpenHashMap
wherever possible:

  1) the LocalVidMaps (used to track replicated vertices) are now implemented
     using the OpenHashSet
  2) an OpenHashMap is temporarily constructed to combine the local OpenHashSet
     with the local (replicated) vertex attribute arrays
  3) because the OpenHashSet constructor grabs a class manifest all operations
     that construct OpenHashSets have been moved to the GraphImpl Singleton to prevent
     implicit variable capture within closures.
Merge branch 'master' of https://github.com/amplab/graphx into VertexSetWithHashSet
renamed update to setMerge
After some testing I realized that the IndexedSeq is still instantiating the array (not maintaining a view) so I have replaced all IndexedSeq[V] with (Int => V)
Changing var to val for keySet in OpenHashMaps
Merge pull request #46 from jegonzal/VertexSetWithHashSet

Switched VertexSetRDD and GraphImpl to use OpenHashSet
Merge branch 'master' of github.com:amplab/graphx