Stage 4: broadcasting the merges works.

Broadcastin all the merges of clusters (that span processor boundaries) is
implemented via all-to-all communication.

Next step: create a UF that contains all the global labels. Then use
the broadcasted merges to make this UF to record the global map of all
the merged clusters (among all the processors).
Calculate total number of global labels.

Added computing the total number of global labels that have not been
finally merged.
Introduced a final UF. It doesn't work yet.

Created a final UF that will map the cross-processors' merges of the
clusters. But this merging does not work correctly at the moment.
Reconsider the setRootId() and makeUnion() methods.