PNG reading support

This is implementation that adds support for reading PNG. All PNG variants are supported with caveats: alpha channel is stripped, 48bit is converted to 24bit, color profiles are ignored.

However, I'm not touching autotools with 10-foot pole, so **I haven't done anything to link with libpng** and define `PNG_SUPPORTED`.

Can somebody else add the libpng detection part?