Fix harmless copy/paste error in pdf_copy_dict.

Thanks to Sebastian for spotting this.
Add pdf_process interface.

Currently the only processing we can do of PDF pages is to run
them through an fz_device. We introduce new "pdf_process"
functionality here to enable us to do more things.

We define a pdf_processor structure with a set of function
pointers in, one per PDF operator, together with functions
for processing xobjects etc. The guts of pdf_run_page_contents
and pdf_run_annot operations are then extracted to give
pdf_process_page_contents and pdf_process_annot, and the
originals implemented in terms of these.

This commit contains just one instance of a pdf_processor, namely
the "run" processor, which contains the original code refactored.

The graphical state (and device pointer) is now part of private data
to the run operator set, rather than being in pdf_csi.
Add pdf_process for writing operator streams out to a buffer.

Using this, we can reconstruct pdf streams out of the process
called. This will enable us to do filtering when used in
combination with future commits.
Add pdf_process for filtering operator streams.

Currently this knows about q/Q matching/eliding and avoiding
repeated/unneccesary color/colorspace setting.

It will also collect a dictionary of resources used by a page.

This can be extended to be cleverer in future.
Bug 691691: Add way of clearing cached objects out of the xref.

We add various facilities here, intended to allow us to efficiently
minimise the memory we use for holding cached pdf objects.

Firstly, we add the ability to 'mark' all the currently loaded objects.

Next we add the ability to 'clear the xref' - to drop all the currently
loaded objects that have no other references except the ones held by the
xref table itself.

Finally, we add the ability to 'clear the xref to the last mark' - to
drop all the currently loaded objects that have been created since the
last 'mark' operation and have no other references except the ones held
by the xref table.

We expose this to the user by adding a new device hint 'FZ_NO_CACHE'.
If set on the device, then the PDF interpreter will pdf_mark_xref before
starting and pdf_clear_xref_to_mark afterwards. Thus no additional
objects will be retained in memory after a given page is run, unless
someone else picks them up and takes a reference to them as part of
the run.

We amend our simple example app to set this device hint when loading
pages as part of a search.