ae.utils.graphics.view: Tighten isDirectView condition
ae.utils.graphics: Replace newImage with direct instantiation
ae.utils.graphics.view: Fix nearestNeighbor
ae.utils.graphics: Add ChannelType template, which also works with basic types
ae.utils.graphics.image: Allow toPNG to work with non-direct views
ae.utils.graphics.image: Allow toPNG to work with non-Color views
ae.utils.graphics: Comments, unit tests, syntax tweaks
ae.utils.graphics.color: Implement opOpAssign
ae.utils.graphics.color: Implement opCast
ae.utils.graphics.color: Fix ChangeChannelType for non-Color types
ae.utils.graphics.color: Add ExpandChannelType
ae.utils.graphics.gamma: Add gammaRamp helper, documentation
ae.utils.graphics.view: Add flipXY, rotateCW, rotateCCW
ae.utils.graphics.view: Add overlay, border
ae.utils.graphics.view: Add SafeWarp, rotate
ae.utils.meta.misc: Add template constraint to structFields
ae.utils.graphics: Revive .canvas.downscaleDraw as .image.downscale