update pointer after ensure_solid_xref call

After calling ensure_solid_xref, the pdf_xref pointer must be updated
in case ensure_solid_xref has reallocated the sections table or uses
a different section table than originally used. Commit
e767bd783d91ae88cd79da19e79afb2c36bcf32a fails to do so in one case.

TODO: Why does pdf_xref_find_subsection solidify xref section 0 instead
of xref section sub?
fix memory leaks

Commit 5add23c7233c3f34fdfa6387873b1d3bdb93e1d6 and commit
2f4cdd4fd0580e3121773e89a7c6e7a9e1ffa54b introduced three memory leaks
which only appear in error cases:
* unzip.c leaks if a ZIP archive uses a compression method other than
  store or Deflate
* xps-zip.c leaks if fz_open_archive_with_stream throws for broken
  ZIP archives
* xps-zip.c leaks also if a piece of a split file is missing
make xps_read_part report correct part sizes

Starting with commit 2f4cdd4fd0580e3121773e89a7c6e7a9e1ffa54b,
xps_read_part zero-terminates the read data. It does however also count
that zero-terminator to the part's size which confuses callers handling
non-text data.
prevent warning C4090

MSVC complains about using const char** as argument to qsort or free
which both expects pointers to (pointers to)* non-const values. Adding
type casts fixes the warning.
Bug 695746: make LZW decoder slightly more tolerant

Ghostscript's LZW decoder accepts invalid LZW code 4096 if it's
immediately followed by LZW clear code 256 for handling files produced
by certain broken encoders and other common PDF readers seem to have
similar error handling. This patch makes MuPDF tolerate such broken
files as well.