Do userland filtering if we can't do kernel filtering.

If, for example, the filtering doesn't pass the kernel's filter
validator because it does backward branching, as would be the case if
"ip protochain" or "ip6 protochain" were used, we don't want to fail, we
want to fall back on filtering in userland.

Use some PCAP_ERROR_ values while we're at it, to match what pcap-bpf.c
does.
Work around annoying Android problem.

For various annoying reasons having to do with DHCP software, some
versions of Android give the mobile-phone-network interface an ARPHRD_
value of ARPHRD_ETHER, even though the packet supplied by that interface
have no link-layer header, and begin with an IP header, so that the
ARPHRD_ value should be ARPHRD_NONE.

Detect those devices by checking the device name, and use DLT_RAW for them.
Pick up fix from Android libpcap.

(Did anybody ever send this fix upstream to us?)
Add support for Apple's DLT_PKTAP.
Add more details to a comment.
fix compiling on Windows after commit dbdee51