Arrows attach to appropriate edges in the nodes

As nodes are dragged around, the arrows between then move to
keep them connected. Arrows now know which side of a node to
attach to according to the relative position of the two attached
nodes. That is, arrows no longer pass through the nodes, but take
a shortest path