Fixed one rendering issue with multi-level merge

Children of a node are only considered if they don't have a younger
(i.e. further from root) parent as well. That is, only the youngest
parent of a child is responsible for allocating space for and
rendering that child.
Crude arrows are now drawn between commits

Arrows have no head (and thus no apparent directionality), and attach
to the top left corner of each node.
Arrows between nodes now showing

Geometry still not quite right, depends on children
being below parents, and arrows are not redrawn when
nodes are moved
Arrows now follow nodes around as they are moved

Arrows now repaint themselves in the proper location as nodes
are dragged around, taking on correct new position and angle.
For now, all arrows attach at bottom/middle of parents and
top/middle of children regardless of relative location
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
Fixed bug related to node depth

GNodes can be visited multiple times during conversion from node,
and each time their depth is set based on the path that was taken
to reach them. This was changed so that the maximum depth would be
taken, so that children are drawn closest to their youngest parent.
Since the children drawing algorithm expects them to be drawn close
to their youngest parent, this fixes a bug that caused overlapping
nodes to be drawn
Arrow attachment site on node now moves smoothly

Improved arrow attachment algorithm to continuously adjust as nodes are
moved around, rather than select 1 of 4 sites based on node locations.
Added method for getting local branches to LocalRepoParser