Ensure that normal nodes are not on the same rank as cluster borders

Now during ranking we add a top and bottom node for the root graph,
which is used to ensure that the root level nodes are properly aligned
in the correct ranks. After ranking is done we remove these nodes.

This change requires that we properly the top node of each cluster to
the greatest rank possible, because we're effectively creating a link to
every root cluster.

Fixes #121
Make min rank for clusters tight

Fixes #117