Provide ISO 28500:2009 writer (aka warc, aka web archive)
Provide ISO 28500:2009 reader (aka warc, aka web archive)
Implant WARC support in tar's get_format_code()
Provide WARC read/write tests
fix, never write more bytes in _warc_data() than ...

previously announce in _warc_header().

The test suite (as is) is one offender.  It populates a 9-byte string, mimicking an IFREG file
but by the time the header makes it into the archive, the size changes from 0 to 9.
fix, request just the bare minimum for a WARC header

Moreover, assume a response of less than the bare minimum header
length to be the archive's EOF.
fix, WARC files urgently need the filesize to be known when the header is written
Obey gcc warnings,

in particular: Don't compare integers of different signedness,
always initialise all members of a struct explicitly.
Fix, actually consume data between calls to _warc_read()
Store and read back mtimes through Last-Modified custom header

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
Hygiene, clean up xmemmem() code a little, use xor sums.

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
Tests, heed Tim's advice and emit ARCHIVE_FAILED for entries ...

that cannot be stored (natively) in WARC format.
Fix, an empty WARC archive needs a bit more than 256 bytes.
Hygiene, protect against NULL filenames in _warc_header()

Return ARCHIVE_WARN immediately.
Hygiene, trust __archive_read_ahead() and kick superfluous check.

Heeding Tim's advice, a non-NULL from __archive_read_ahead() is
guaranteed to be of at least the minimum size, therefore no need to
check for this condition again.
Hygiene, use FALLTHROUGH instead of lint's @fallthrough@
Hygiene, always use xmemmem() because memmem() is a GNU extension
Hygiene, set unconsumed slot exactly once for each branch

in _warc_read().  Also kick __archive_read_consume() because the writer
will consume the bytes for us.  So for the EOF case, set unconsumed to 0,
for the non-EOF case set unconsumed to the minimum of the number of bytes
read and the content length.
Tests, provide known-good archive read test.
Set archive format, and archive format name.

This changeset adheres to the previously imported read test.
The archive format is hard-set to ARCHIVE_FORMAT_WARC, while the
format name is the stringified WARC/x.y version designator, which
for performance reasons will be cached between calls to the header
reader _warc_rdhdr().