Implement python-dmidecode/dmidecode as alternative for kernel DMI

This implementation falls back to python-dmidecode if the kernel as no DMI support. Alternatively, if python-dmidecode is missing, we attempt to use the dmidecode binary before giving up.