Build zoomable and pannable SVG canvas

A common case of where d3 code can do unexpected things is on re-renders. Could we extend our existing tests to see what happens when new data is bound (so some things update, some enter, some exit, some stay the same) and the draw code has happened a second time?