Add debugging for obviously bad positioning assignments
Fix positioning algorithm / temporarily disable rank optimizer

Rework the position algorithm to take into account that it is possible
for a class to have different shifts depending on the adjacent classes
and it is impossible to decide which should impact final shift until
we've already iterated through all nodes. Now we keep track of the
potential shifts that may be applied during the first pass and then we
calculate the actual shifts (choosing the smallest value) during final
coordinate assignment. As far as I know this addresses all issues I am
aware of with the Brandes-Köpf paper.

In addition, I have temporarily disabled the rank optimizer, which
yields some incorrect rank assignments in complex graphs. This needs to
be investigated further in another ticket. The impact for now is that we
may have longer edges than necessary between nodes until the optimizer
is re-enabled.

Fixes #67.