Fuzzing fix: Overrun in fz_predict_png

If a file specifies a silly number of bpp in the PNG predictor it can
overrun a buffer. This was shown by:

  tests_private/fuzzing/mupdf2/013b2dcbd0207501e922910ac335eb59_*.pdf

but no longer shows up due to Simons earlier fix.

Following discussion we still think it's worth having this fix in, as
truncated data streams can cause len < bpp. Possibly we should throw
an error here, but I think that's not necessary as we will return the
short length, and the image reading code will notice that the image
is truncated already.

Thanks to Mateusz Jurczyk and Gynvael Coldwind of the Google Security
Team for providing the fuzzing files.
Fix fuzzing bug due to float representation limitations.

The gel bbox was being stored internally as floats (despite
only holding ints). This means that as numbers get large the
bbox can become approximate, rather than exact. If the bbox
becomes smaller than it should, this causes crashes in the
scanline filling code.

This is seen with:

  tests_private/fuzzing/mupdf2/17f8aee51ac776994af0b36195cdadd7_signal_sigsegv_5607be_7308_5912.pdf

The solution is simply to use ints rather than floats.

Thanks to Mateusz Jurczyk and Gynvael Coldwind of the Google Security
Team for providing the example files.
fuzzing fix for null colorspace derefence.

Bad annotation appearance streams can cause font_recs to have invalid
values in. Avoid this partly by hardening the code against duff values,
and partly by setting sane defaults before the parsing.

This can be seen in:

33bfbe117bfef7fafc3f927acf50a2e7_signal_sigsegv_81dd96_6257_5205.pdf

Thanks to Mateusz Jurczyk and Gynvael Coldwind of the Google Security
Team for providing the example files.
Update curl build to avoid warning when linking windows release builds.