Build zoomable and pannable SVG canvas

`createSvg` and the two behaviour functions above seem generic enough to be utils in `services.js`. Any reason we have them here instead?