Added support for taking a snaspshot of a CanvasImage.

On iOS in particular, this can substantially improve performance if you will be
rendering the snapshot into other canvas images many times. This is also useful
on iOS if you just plan to render an Image into a Canvas many times, because
iOS will (I believe only in low memory situations) re-decode the image from its
PNG source data every time you draw it which is very slow. So you can render
the Image into a CanvasImage and then snapshot that CanvasImage to get maximum
"render into Canvas" performance out of your image, at the cost of forcing the
OS to keep the uncompressed image data (for that image) in memory.

This is not yet implemented for HTML and Flash. TODO!