Improved the way that branch labels are drawn

Branch labels are now drawn on alternating sides of the children
of a node. This somewhat reduces clutter, but still is far from
acceptable
Added stub to detect collisions, fixed up bugs

Various minor code fixes, no new functionality