add QPainterPath AbstractArrow::contour()

used for path highlighting on hover
calculate boundingRect based on the hoverPath
use shapePath for contains()
enable hovering of edges
simplify hovering mechanism