[SPARK-1931] Reconstruct routing tables in Graph.partitionBy

905173df57b90f90ebafb22e43f55164445330e6 introduced a bug in partitionBy
where, after repartitioning the edges, it reuses the VertexRDD without
updating the routing tables to reflect the new edge layout. Subsequent
accesses of the triplets contain nulls for many vertex properties.

This commit adds a test for this bug and fixes it by introducing
`VertexRDD#withEdges` and calling it in `partitionBy`.