Fix some issues with displaying Ethernet media status on recent FreeBSD kernels.
- Don't apply IFM_SUBTYPE to the raw subtype in the description table.
IFM_SUBTYPE() requires a fully populated word and was truncating values
in the table when comparing resulting in false matches (notably
"10GBase-KX4" for the no media case) after recent changes to add extended
Ethernet media states in FreeBSD.
- Explicitly check for IFM_ETHER.
- Use SIOCGIFXMEDIA when present to obtain extended media states on newer
kernels.
- Explicitly handle "no carrier".