Visualisation bug fixes.

Remove CSS :hover animations.

It's confusing to have the same attributes controlled both by Javascript
and CSS. Also the growing-node behaviour was unhelpful, because it
generally obscured arrow-heads, thereby hiding the direction of
relationships.

Delegate overlay shape to arrow objects.

Use a dedicated path object instead of rectangles so that we can detect
hovering over curved arrows.

Improve contract between layout and arrows.

Previously we set an additional shortCaptionLength property on arrow
objects after instantiation. Instead we supply that value as an argument
to the outline() function, so arrow objects now immutable. This should
make the data-flow a little easier to follow.

Accurate shaft length for positive deflection arrows.

Incorrect calculation previously meant that captions for these arrows
were never truncated.

Author: Alistair Jones <alistair.jones@gmail.com>