Adds support for loading PNG data (see details).

This patch adds support for simplifying the stream-based Cairo API for
loading PNG images and allows the user to simply load a large, contiguous
chunk of data as a surface.