Canvas: Allow instantiation without real DOM
Add utils/matrix.js and use it everywhere needed

The matrix utils are helpers for creating matrices (or setting
data on an existing matrix) for different transformations. This
makes it a single place where the structure of these matrices is
defined, and code using these matrices gets smaller and more
readable.
The `parent` of CanvasObject can now also be a World instance.

When adding an object to world.objects, the `parent` property of
the object will be automatically set to the World instance.
test: Move getColor utility out to test/utils
test/utils: Add test utility snapshot for saving a rendered image
Camera: Allow a reference to be passed to getTransformationMatrix

If a Canvas instance is passed to getTransformationMatrix, the
rotation will change sign (to adjust for that the canvas renders
what the camera sees, so the rendering should be rotated in the
opposite direction). The scaling should be the exact zoom value
if a Canvas instance is passed. If a Canvas instance is not
passed, the scaling should be the inverse of the zoom (1 / zoom),
and the rotation should be the normal rotation.