add additional methods to Color
convert PixelCanvas to use {get,put}ImageData rather than fillRect
return properties rather than cloned values for oft called functions
cache often retrieved values in PixelCanvas