Bug 694869: Fix indetermisms with broken PNG files.

This bug shows 2 problems with our data handling.

Firstly, if a zip file entry has less data in the stream than it
is declared to have, we would leave the end of the data uninitialised.
We now put out a warning, and blank it with zeros.

Secondly, if the PNG decompression fails to decode enough data, we
don't notice. Now we give a warning and blank the remaining pixels.
Introduce 'document handlers'.

We define a document handler for each file type (2 in the case of PDF, one
to handle files with the ability to 'run' them, and one without).

We then register these handlers with the context at startup, and then
call fz_open_document... as usual. This enables people to select the
document types they want at will (and even to extend the library with more
document types should they wish).