Don't panic when the size_callback asks for a zero-sized image
gdk_pixbuf_get_file_info() uses a GdkPixbufLoader, but in its "size-prepared" callback it saves the computed size, and then calls gdk_pixbuf_loader_set_size(loader, 0, 0). Presumably it does to tell loaders that it only wanted to know the size, but that they shouldn't decode or render the image to a pixbuf buffer.
Librsvg used to panic when getting (0, 0) from the size_callback:
Handle.get_dimensions() would return (0, 0)
Handle.get_pixbuf_sub() would create an ImageSurface of size (0, 0), which is valid in Cairo's terms.
But SharedImageSurface used to do
data_ptr = NonNull::new(cairo_image_surface_get_data(...)).unwrap()
which panics when cairo_image_surface_get_data() returs NULL.
So, we relax this into not using a NonNull.
As a special case, since GdkPixbuf does not support zero-sized pixbufs, we return a 1x1 transparent pixbuf from the surface-to-pixbuf functions.