avoid warning when sysdescr starts with space
HP does not imply printer
NetApp implies storage
QNap identification rule
add fallback type identification
chassis-type is not network device specific
identify type from device too
return undef for null-bytes only keys

This restores the fallback on DigitalProductId4 when DigitalProductId
value is invalid.

closes: #2632
more compact
no need to iterate here
merge multiple calls to setHardware()
use dedicated function to ensure output
fix WMI property name
no need to set workgroup multiple times
better readability
unused property
no need to set WINOWNER twice