justify declaration of loopback_print()

This fixes a MSVC warning Gisle Vanem reports.
justify more function declarations
refine option parsing a bit

My wish is to put minimal code inside the getopt() switch. So I've added
a Dflag for option '-D' and a new function show_devices_and_exit().
Multi-byte fields are in network byte order; fetch them appropriately.
Fix test files to match byte-order fix for the RPL dissector.
Mark the TCP header structure as unaligned.
Point to IP addresses with "void *"s.

This keeps GCC from assuming the IP addresses are aligned and generating
32-bit load/store pairs on SPARC; those require alignment and cause
tcpdump to crash.
Add changes for 4.5.1 and post-4.5.1 changes.
Don't use a u_int16_t * to extract data from packets.

That convinces some compilers that the data is 16-bit aligned, but
there's no such guarantee of alignment.
Fix a bug the previous change made a bit more obvious.
Move safememcpy() to util.c so it doesn't get inlined.

It appears that some C compilers will inline safememcpy() *and* will, as
a result, optimize to assume alignment it if it's passed a
putatively-aligned pointer. As the pointers in question are not
guaranteed to be aligned, that can cause crashes on, for example, SPARC.

Also, rename the function to unaligned_memcpy(), to clarify what's
"safe" about it, and change some direct memcpy() calls to use it as
well.
Get rid of form feed in source.
Revert print-tcp memcpy() changes, and use unaligned_memcpy() instead.

That should prevent optimizing the memcpy into code that assumes
alignment.

Add unaligned_memcmp(), and use it, as well.
print-forces: remove unused variable