We currently decode PNG and GIF images completely, but we only need to
decode the "header".
This should be straightforward to accomplish by adding a method to
PngReaderInterface that instructs the reader to read the header vs the
entire image.
We'd then use the appropriate png.h functions for PNG images, and
GIFReadScreen (in optipng's gifread.h) for GIF images.