Only output one byte at the time

The arrays in the source code are declared as char*; emitting two
bytes at a time will give us truncation warnings.

Also quote the filenames in case anyone ever pass a directory name
that contains a space.
Replace encoded input files with plain-text variants

The build script can now generate the encoded variant from these true
source files, so let us keep them in the source repository instead.
Generate encoded files from plain-text sources

We want to store the plain-text sources in version control (because
these are actually readable) and use the script to generate them when
we build.
Pick up files relative to an include directory

If we use quotes then the files must be relative to the source; if
we use angle brackets then we can import generated files from
somewhere in the build tree.
Use a more descriptive file extension

Instead of just .dat which can be anything, use an extension which
describes the process that has been done to the data.
Depend on the packing script as well

If we change the process, we want the data files to be updated.
Refactor in preparation for filtering

This only adds an extra layer around the actual extraction of the
case from the executable; there is no functional change.
Depend on Boost::iostreams

The benchmark library uses Boost::iostreams to do decompression. Since
we only scan for the Boost dependency once, this submodule is added to
all of the projects in order to have a coherent dependency on Boost.
Use compressed input data

Notice that we now have embedded binary zero data in the stream, so
we must explicitly pass the size to the decompression routine.

The benchmark now uses less I/O since the .data segment is smaller,
but somewhat more CPU since it must decompress the data. Since the
.data segment is private memory anyway, it does not overall use more
memory.
Merge pull request #22 from rolk/022_gzip

Embed compressed case data