Reduce pdf_obj memory usage.
Reduce pdf_obj memory usage.

Historically pdf_obj was a structure with a header and a union in it.
As time has gone by more stuff has been put into the header, and the
different arms of the union have changed in size. We've even adopted
the idea of different 'kinds' of pdf_obj's being different sizes
(names and strings for examples).

Here we rework the system slightly; we minimise the header, and split
out everything into different structures. Every different 'kind' of
pdf_obj is now it's own structure, just as big as it needs to be.

Key changes:

 * refs is now a short rather than an int. We are never going
   to need more than 32767 refs (indeed, if we ever need more
   than about 3 (10 at the outside), something has gone very
   wrong!). This aids structure packing.

 * Only arrays, dicts and refs actually need the pdf_document
   pointer.

 * Only arrays and dicts need the parent_num pointer.

lustersir/MuPDF,asbloomf/mupdf,hackqiang/mupdf,fluks/mupdf-x11-bookmarks,hjiayz/forkmupdf,poor-grad-student/mupdf,tribals/mupdf,github201407/MuPDF,asbloomf/mupdf,PuzzleFlow/mupdf,MokiMobility/muPDF,PuzzleFlow/mupdf,MokiMobility/muPDF,PuzzleFlow/mupdf,FabriceSalvaire/mupdf-cmake,hxx0215/MuPDFMirror,fluks/mupdf-x11-bookmarks,FabriceSalvaire/mupdf-cmake,hjiayz/forkmupdf,TamirEvan/mupdf,asbloomf/mupdf,asbloomf/mupdf,geetakaur/NewApps,TamirEvan/mupdf,poor-grad-student/mupdf,benoit-pierre/mupdf,TamirEvan/mupdf,FabriceSalvaire/mupdf-cmake,lamemate/mupdf,robamler/mupdf-nacl,TamirEvan/mupdf,geetakaur/NewApps,geetakaur/NewApps,MokiMobility/muPDF,fluks/mupdf-x11-bookmarks,muennich/mupdf,zeniko/mupdf,github201407/MuPDF,hackqiang/mupdf,sebras/mupdf,ziel/mupdf,hjiayz/forkmupdf,FabriceSalvaire/mupdf-cmake,TamirEvan/mupdf,lamemate/mupdf,geetakaur/NewApps,tribals/mupdf,TamirEvan/mupdf,benoit-pierre/mupdf,benoit-pierre/mupdf,ccxvii/mupdf,ArtifexSoftware/mupdf,hackqiang/mupdf,ccxvii/mupdf,ArtifexSoftware/mupdf,benoit-pierre/mupdf,ziel/mupdf,lamemate/mupdf,hackqiang/mupdf,MokiMobility/muPDF,lamemate/mupdf,robamler/mupdf-nacl,hjiayz/forkmupdf,asbloomf/mupdf,hackqiang/mupdf,zeniko/mupdf,benoit-pierre/mupdf,tribals/mupdf,github201407/MuPDF,hjiayz/forkmupdf,github201407/MuPDF,MokiMobility/muPDF,knielsen/mupdf,lustersir/MuPDF,sebras/mupdf,hjiayz/forkmupdf,hackqiang/mupdf,zeniko/mupdf,hxx0215/MuPDFMirror,ziel/mupdf,muennich/mupdf,lustersir/MuPDF,hxx0215/MuPDFMirror,PuzzleFlow/mupdf,lamemate/mupdf,ziel/mupdf,fluks/mupdf-x11-bookmarks,fluks/mupdf-x11-bookmarks,lustersir/MuPDF,lamemate/mupdf,hxx0215/MuPDFMirror,tribals/mupdf,muennich/mupdf,ArtifexSoftware/mupdf,PuzzleFlow/mupdf,robamler/mupdf-nacl,poor-grad-student/mupdf,hxx0215/MuPDFMirror,fluks/mupdf-x11-bookmarks,TamirEvan/mupdf,zeniko/mupdf,knielsen/mupdf,geetakaur/NewApps,hxx0215/MuPDFMirror,poor-grad-student/mupdf,muennich/mupdf,zeniko/mupdf,knielsen/mupdf,ArtifexSoftware/mupdf,MokiMobility/muPDF,PuzzleFlow/mupdf,robamler/mupdf-nacl,ccxvii/mupdf,knielsen/mupdf,FabriceSalvaire/mupdf-cmake,tribals/mupdf,muennich/mupdf,tribals/mupdf,geetakaur/NewApps,TamirEvan/mupdf,PuzzleFlow/mupdf,ArtifexSoftware/mupdf,poor-grad-student/mupdf,zeniko/mupdf,ccxvii/mupdf,github201407/MuPDF,muennich/mupdf,ArtifexSoftware/mupdf,ArtifexSoftware/mupdf,knielsen/mupdf,ccxvii/mupdf,sebras/mupdf,lustersir/MuPDF,benoit-pierre/mupdf,sebras/mupdf,fluks/mupdf-x11-bookmarks,ziel/mupdf,robamler/mupdf-nacl,knielsen/mupdf,robamler/mupdf-nacl,ccxvii/mupdf,sebras/mupdf,asbloomf/mupdf,lustersir/MuPDF,FabriceSalvaire/mupdf-cmake,ArtifexSoftware/mupdf,poor-grad-student/mupdf,github201407/MuPDF,muennich/mupdf,sebras/mupdf,ziel/mupdf