Add two utils: getClassName and isInstanceOf

The isInstanceOf utility can be used to check if an object is an
instance of a class with a certain name. The upside of this is
that the class itself is not needed, as long as we know the name.
By checking for name instead of the actual class reference, we can
avoid circular dependencies where classes are required in a module
only for doing a type check somewhere.

It uses the new utility getClassName to get the name of a
constructor function. That uses the className property if present
(on the constructor function), otherwise it checks
constructor.name (or fall back to parsing the stringified
function).
Update all classes to have a className property

By doing this, utils/getClassName can now easily get the name
of a class, even after source minification.
Don't require classes when they're only used for type checking

When type checking against a class, and that's the only use for
requiring the class, we should use utils/isInstanceOf instead.
This can help against circular dependencies as we're only type
checking against a class name, and not the entire class.
CanvasObject: Remove getGlobalTransformationMatrix

The functionality is moved into the general
getTransformationMatrix that can now get the matrix for this
object only, up to an object in the parent chain, the world,
camera or the canvas.