Given a valid PNG image, returns an immutable hash where each key is
the name of a chunk (which is itself a hash). If a chunk may appear multiple
times according to the PNG spec, then the chunk information is wrapped inside
a list of hashes. In txt chunks, if the text has been deflated, it will be
inflated in this step.

Given a hash, returns a valid PNG image as a byte string. If converted from
one form to the other, the resulting byte string may not be identical to the
original bytes due to the ordering of the chunks, but all the chunks should
be inside the final result. If the hash has iTXt chunks, the text data will
be deflated if it exceeds 1024 bytes.