Promote QPDF::ObjGen to top-level object QPDFObjGen
Add QPDFObjectHandle::getObjGen()

This is safer than getObjectID() and getGeneration() for many uses.
Use QPDFObjectHandle::getObjGen() where appropriate

In internal code and examples, replace calls to getObjectID() and
getGeneration() with calls to getObjGen() where possible.
Bug fix: handle generation > 0 when generating object streams

Rework QPDFWriter to always track old object IDs and QPDFObjGen
instead of int, thus not discarding the generation number.  Switch to
QPDF::getCompressibleObjGen() to properly handle the case of an old
object eligible for compression that has a generation of other than
zero.
Add optional /Length key in crypt filter dictionary
Handle /Outlines dictionary being a direct object

Even though this case is not valid according to the spec, it has been
seen, and caused an internal error.
Retarget some items for 4.2.0 and 4.3.0

Bug fixes for 4.2.0 force additional interfaces, so move most of the
4.2.0 items to 4.3.0.
Handle more broken files

Space rather than newline after xref, missing /ID in trailer for
encrypted file.  This enables qpdf to handle some files that xpdf can
handle.  Adobe reader can't necessarily handle them.