I implemented the basic idea of zooming. As part of it, I set up a helper event handling to track the mouse position.
I implemented scaling for text and line. The text, however, is buggy.
I fixed line and text elements to scale well.
I implemented a new solution for zooming. It has two parts: a scaling relative to the canvas center, and a movement toward the mouse position. The latter is not ready yet.
Zooming itself now seems to work fine, but the canvas-moving is buggy.
I fixed the canvas-moving when zooming. I also fixed the canvas-viewport-reset method.
I removed a console.log
I fixed saving.
I added scaleExternalReference method to the selection prototype.
I fixed the scaling of selections when canvas is zoomed.
Merge branch 'zoom'

I implemented zooming for the canvas.
Zooming consists of two actions on each element: a scaling relative to the canvas center,
and a movement toward the position pointed by the mouse.
Note: this solution works, however, it is far from optiomal. One of the issues is that the
      relative scaling itself includes a movement, so in total two movements are made on
      each element whenever the canvas is zoomed. Improve it.