Build zoomable and pannable SVG canvas

Could we test this grid snapping on dragging. I'm sure there's a way to simulate the dragging in tests using d3.