Get dirty recursion based highlighting half working.

This mostly kind of works. It blows the callstack in chrome quite
easily, and changes the colors of the text, but the idea of walking the
links and collecting them should work once it is not using recursion.
Fix offset to make small nodes not covered by tooltips.
Fix subtree highlighting issues with text getting highlighted.
Fix errors when choosing the last node in a subtree.
Make colour changes happen via CSS.

Also change arrowhead colours on hover.