detect: Adding ethtool support

This patch was done on a user based demand which was "Can we have the ethtool information part of the detect ?"
The answer is "Yes" and here come the patch.

This patch does provide an automatic parsing of "ethtool -a" & "ethtool -k".

A typical output looks like:

 ('network', 'enp0s25', 'businfo', 'pci@0000:00:19.0'),
 ('network', 'enp0s25', 'vendor', 'Intel Corporation'),
 ('network', 'enp0s25', 'product', '82579LM Gigabit Network Connection'),
 ('network', 'enp0s25', 'firmware', '0.13-3'),
 ('network', 'enp0s25', 'size', '1000000000'),
 ('network', 'enp0s25', 'ipv4', '10.142.32.73'),
 ('network', 'enp0s25', 'ipv4-netmask', '255.255.255.0'),
 ('network', 'enp0s25', 'ipv4-cidr', '24'),
 ('network', 'enp0s25', 'ipv4-network', '10.142.32.0'),
 ('network', 'enp0s25', 'link', 'yes'),
 ('network', 'enp0s25', 'driver', 'e1000e'),
 ('network', 'enp0s25', 'duplex', 'full'),
 ('network', 'enp0s25', 'speed', '1Gbit/s'),
 ('network', 'enp0s25', 'latency', '0'),
 ('network', 'enp0s25', 'autonegotiation', 'on'),
 ('network', 'enp0s25', 'serial', '00:21:cc:d9:bf:26'),
 ('network', 'enp0s25', 'Autonegotiate', 'on'),
 ('network', 'enp0s25', 'RX', 'on'),
 ('network', 'enp0s25', 'TX', 'on'),
 ('network', 'enp0s25', 'rx-checksumming', 'on'),
 ('network', 'enp0s25', 'tx-checksumming', 'on'),
 ('network', 'enp0s25', 'tx-checksumming/tx-checksum-ipv4', 'off [fixed]'),
 ('network', 'enp0s25', 'tx-checksumming/tx-checksum-ip-generic', 'on'),
 ('network', 'enp0s25', 'tx-checksumming/tx-checksum-ipv6', 'off [fixed]'),
 ('network', 'enp0s25', 'tx-checksumming/tx-checksum-fcoe-crc', 'off [fixed]'),
 ('network', 'enp0s25', 'tx-checksumming/tx-checksum-sctp', 'off [fixed]'),
 ('network', 'enp0s25', 'scatter-gather', 'on'),
 ('network', 'enp0s25', 'scatter-gather/tx-scatter-gather', 'on'),
 ('network', 'enp0s25', 'scatter-gather/tx-scatter-gather-fraglist', 'off [fixed]'),
 ('network', 'enp0s25', 'tcp-segmentation-offload', 'on'),
 ('network', 'enp0s25', 'tcp-segmentation-offload/tx-tcp-segmentation', 'on'),
 ('network', 'enp0s25', 'tcp-segmentation-offload/tx-tcp-ecn-segmentation', 'off [fixed]'),
 ('network', 'enp0s25', 'tcp-segmentation-offload/tx-tcp6-segmentation', 'on'),
 ('network', 'enp0s25', 'udp-fragmentation-offload', 'off [fixed]'),
 ('network', 'enp0s25', 'generic-segmentation-offload', 'on'),
 ('network', 'enp0s25', 'generic-receive-offload', 'on'),
 ('network', 'enp0s25', 'large-receive-offload', 'off [fixed]'),
 ('network', 'enp0s25', 'rx-vlan-offload', 'on'),
 ('network', 'enp0s25', 'tx-vlan-offload', 'on'),
 ('network', 'enp0s25', 'ntuple-filters', 'off [fixed]'),
 ('network', 'enp0s25', 'receive-hashing', 'on'),
 ('network', 'enp0s25', 'highdma', 'on [fixed]'),
 ('network', 'enp0s25', 'rx-vlan-filter', 'off [fixed]'),
 ('network', 'enp0s25', 'vlan-challenged', 'off [fixed]'),
 ('network', 'enp0s25', 'tx-lockless', 'off [fixed]'),
 ('network', 'enp0s25', 'netns-local', 'off [fixed]'),
 ('network', 'enp0s25', 'tx-gso-robust', 'off [fixed]'),
 ('network', 'enp0s25', 'tx-fcoe-segmentation', 'off [fixed]'),
 ('network', 'enp0s25', 'tx-gre-segmentation', 'off [fixed]'),
 ('network', 'enp0s25', 'tx-ipip-segmentation', 'off [fixed]'),
 ('network', 'enp0s25', 'tx-sit-segmentation', 'off [fixed]'),
 ('network', 'enp0s25', 'tx-udp_tnl-segmentation', 'off [fixed]'),
 ('network', 'enp0s25', 'tx-mpls-segmentation', 'off [fixed]'),
 ('network', 'enp0s25', 'fcoe-mtu', 'off [fixed]'),
 ('network', 'enp0s25', 'tx-nocache-copy', 'off'),
 ('network', 'enp0s25', 'loopback', 'off [fixed]'),
 ('network', 'enp0s25', 'rx-fcs', 'off'),
 ('network', 'enp0s25', 'rx-all', 'off'),
 ('network', 'enp0s25', 'tx-vlan-stag-hw-insert', 'off [fixed]'),
 ('network', 'enp0s25', 'rx-vlan-stag-hw-parse', 'off [fixed]'),
 ('network', 'enp0s25', 'rx-vlan-stag-filter', 'off [fixed]'),
 ('network', 'enp0s25', 'l2-fwd-offload', 'off [fixed]'),