Better deal with security exceptions and missing image data in Raster.
Have Raster#image only return an image, not a canvas element.
Handle Raster#onLoad() callback for inlined images.

Code can now switch back and forth between inlined images and external sources.
Implement Raster#getElement(), returning either the internal native canvas or image element.

And use it internally in various places.
Have Raster serialize itself.

The source property either contains the link to the external source, or the data url.
Implement simple Project serialization.