Log current Pregel iteration

(cherry picked from commit 54cbd2b4640db13a9cb10ce693e86b776d003907)

Conflicts:
	graphx/src/main/scala/org/apache/spark/graphx/Pregel.scala
In Analytics, take PageRank numIter

(cherry picked from commit bcc79f2cfb7f26da43326d905e2d317f33ff45ee)
In GraphLoader, coalesce to minEdgePartitions

(cherry picked from commit 1993225fde2c8f55b12644e47b7f874b68bd5d69)

Conflicts:
	graphx/src/main/scala/org/apache/spark/graphx/GraphLoader.scala
Unify GraphImpl RDDs + other graph load optimizations

This commit makes the following changes:

1. *Unify RDDs to avoid zipPartitions.* A graph used to be four RDDs:
vertices, edges, routing table, and triplet view. This commit merges
them down to two: vertices (with routing table), and edges (with
replicated vertices).

2. *Avoid duplicate shuffle in graph building.* We used to do two shuffles
when building a graph: one to extract routing information from the edges
and move it to the vertices, and another to find nonexistent vertices
referred to by edges. With this commit, the latter is done as a side
effect of the former.

3. *Avoid no-op shuffle when joins are fully eliminated.* This is a side
effect of unifying the edges and the triplet view.

4. *Join elimination for mapTriplets.*

5. *Ship only the needed vertex attributes when upgrading the
triplet view.* If the triplet view already contains source attributes,
and we now need both attributes, only ship destination attributes rather
than re-shipping both. This is done in `ReplicatedVertexView#upgrade`.
Show RDD name in stage table for easier debugging
Custom serializer for RoutingTableMessage
Use *AggMsgSerializer for all RDD[(VertexId, VD)] shuffles