arrows: refactor arrow generating functions to return the actual start point
This is currently a no-op, but upcoming commits will adjust the arrow
start point to take pendwidth into account in order to avoid
overlapping the node periphery and subsequent primitive arrow shapes
of multi-shape arrows.
The arrow start point is the point on the arrow which is farthest away
along the edge from the node it is associated with.
Towards https://gitlab.com/graphviz/graphviz/-/issues/372.