Improve handling of directories and relative paths in --include-file.

This commit introduces a pair of utility functions pack_include_files and
unpack_include_files.  The former slurps up the specified files and directories
into a single binary blob, and the latter unpacks that blob into the required
structure.  (The blob is a zipfile, but that's an implementation detail.)

This makes it easier for --include-file to reference whole directories, to
include things in paths other than the current directory, and to preserve
file permissions on the included files.