Build zoomable and pannable SVG canvas

I think we still need to handle and test cases where something is dragged outside of the grid limits.