memcmp() doesn't modify either of its arguments.
Merge git://github.com/the-tcpdump-group/tcpdump

"Please enter a commit message to explain why this merge is necessary" -
because Git appears to think it is, for some reason, otherwise it
wouldn't have told me to enter that message.
Rework the cookie cache.

This simplifies the code, gets rid of some type-punning about which GCC
warns, and reduces the size of the cache entries.
Fix some more unaligned accesses.
Add some length checks for byte-escaped PPP.

Thanks and a tip of the Hatlo hat to the Clang Static Analyzer for
catching these.
Another length check, also found by the Clang Static Analyzer.
Use AC_CHECK_TOOL to find ar.

On some platforms, such as at least some versions of HP-UX, AR isn't
automatically set by make.
Use EXTRACT_nBITS even when just testing against zero.

*All* references to possibly-unaligned multi-byte fields have to be done
in an unaligned-safe fashion.
Use unaligned_memcmp() to compare with IPv{4,6} addresses in a packet.

They are, after all, not guaranteed to be aligned.