This is a slightly scary set of changes to be making. It overhauls
how the view is rendered.
Rather than use d3 for every single part of generating the view,
we new use native DOM functions as much as possible.
d3 is still used for the basic heavy lifting of working out what
nodes/links etc need to be added/removed from the view. But once
it comes to rendering them, d3 is side-lined as much as possible.
There's room for further improvement. This change focusses on Nodes
and Links. It has not touched groups, subflow-ports and link-nodes.