Uncompress stream data for some linearization tests

For linearization tests where we are actually comparing the exact
output of the test with a known file, uncompress stream data so we can
see what's there.  This makes looking at future changes a little
easier.
Reference object with zero offset

This file used to exercise a zero offset test case when qpdf would
visit every object in the file.  After the next commit, qpdf no longer
touches unreferenced objects, so a reference had to be added to
continue to have this file exercise the zero offset case.
Eliminate flattenScalarReferences
change EncryptionData
Add V5 parameters to EncryptionData
Add ExtensionLevel support to version handling

All version operations are now fully aware of extension levels.
Update AES classes to work with 256-bit keys
Allow specification of AES initialization vector
Incorporate sha2 code from sphlib 3.0

Changes from upstream are limited to change #include paths so that I
can place header files and included "c" files in a subdirectory.  I
didn't keep the unit tests from sphlib but instead verified them by
running them manually.  I will implement the same tests using the
Pl_SHA2 pipeline except that sphlib's sha2 implementation supports
partial bytes, which I will not exercise in qpdf or our tests.
SHA2 pipeline with support for 256, 384, and 512 bits

Implemented pipeline around sph sha calls using standard test vectors
for full-byte values.  Did not test or support partial byte values.
Comment about non-const Pipeline data
Fix infinite loop trimming passwords with ( in them
Add random number functions to QUtil
Add missing test case from long ago

I noticed a test output file that was not accessed in the test suite
and added a test case for it.
Add note in TODO about random number seeding
Cosmetic change to test_driver source

Change variable name for better clarity.
Support files with only attachments encrypted

Test cases added in a future commit since they depend on /R=6 support.
Support for encryption with /V=5 and /R=5 and /R=6

Read and write support is implemented for /V=5 with /R=5 as well as
/R=6.  /R=5 is the deprecated encryption method used by Acrobat IX.
/R=6 is the encryption method used by PDF 2.0 from ISO 32000-2.
Refactor Dictionary writing code

Original code was written before we could shallow copy objects, so all
the filtering was done by suppressing the output of certain keys and
replacing them with other keys.  Now we can simplify the code greatly
by modifying shallow copies of dictionaries in place.
Remove /Crypt from stream filters unconditionally

When writing a new stream, always remove /Crypt even if we are not
otherwise able to filter the stream.