Image2

I think this is simpler and better. You can ignore the comments in the pull request for image.
I kept `uncheckedImageRef` since we need to cache the width and height in `loadImageExt` anyway so that backends can use them, but the user does not need to provide them explicitly when using the load functions.

There is a companion rasterific branch, but the original cairo image branch works as is.