Build zoomable and pannable SVG canvas

No reason. Will move to utils.