To prepare support of additional OS, interfaces have been abstracted
into a proper structure. It is still expected that each OS should have
its own `update_interfaces()` that will discover interfaces and set
the appropriate `lldpd_hardware` structures. However, helper functions
have been setup with the assumption that interfaces are put in an
abstract `interfaces_device_list`. It is expected that
`update_interfaces()` build such a list with all sensible
information (VLAN, bond, bridge, drivers, ...). Once this is done,
`interfaces_helper_*` function can be called to do most of the work.
Another change is that VLAN stuff, bridge stuff and bonding stuff is
discovered only once instead of using functions each time we need to
know something. This should lower the number of ioctl call (which can
be costly on some special hardware, for example with Marvell
DSA). This also enable to discover some of those stuff through
Netlink.