Check whether the version field is available before looking at it.

While we're at it, use ND_TCHECK(), rather than a hand-rolled check, to
check whether we have the full fixed-length portion of the IPv4 header.
Do more length checking.  From OpenBSD.
Fix length checking.

Check both the captured length and the on-the-wire length (the latter
*should* be greater than or equal to the former, but that's not
guaranteed).

Add some additional length checks, so neither caplen nor length
underflow.

If we stop dissecting because the packet is too short, return 1, not 0,
as we've "dissected" what we can; 0 means "this is LLC+SNAP with an OUI
of 0 and an unknown Ethertype".
Clean up length checks.

Check only the amount of length that matters at any given point; yes,
this means we do multiple checks, but so it goes.

We don't need to check for LLC+SNAP - llc_print() does that for us.  We
do, however, need to check to make sure we can safely skip the Fore
header.
Always fill in the buffer on a successful return from decode_rt_routing_info().
Don't dissect a header with a version field != 4.

Also, clean up the message printed when it's 6.
Dissect the IPv4 header if the version is wrong, but fix the messages.
Only print the incorporated IP packet if there is one.

Check for the ICMP types that *do* include an IP packet, rather than
checking for a set that doesn't.  This does a better job of handling
unknown ICMP types.