c/agent: include EFI support in hardware report

Adds firmware EFI support status to the hardware report.
It is represented as an enum which is populated based on two different
data sources. The ENABLED state is set if Linux has EFI runtime
services available. The SUPPORTED/UNSUPPORTED states depend on the
SMBIOS tables provided by the firmware
and are used if EFI runtime services are not available.
If neither are available, UNKNOWN is used.

Change-Id: I7642ccda14d5494294a7463755de18e73a8a9c53
Reviewed-on: https://review.monogon.dev/c/monogon/+/1571
Reviewed-by: Serge Bazanski <serge@monogon.tech>
Tested-by: Jenkins CI
diff --git a/metropolis/pkg/smbios/structures.go b/metropolis/pkg/smbios/structures.go
index e4bc4d2..a6bdb86 100644
--- a/metropolis/pkg/smbios/structures.go
+++ b/metropolis/pkg/smbios/structures.go
@@ -12,6 +12,9 @@
 	structTypeMemoryDevice         = 17
 )
 
+// Table 7.1.2.2 Bit 3
+const UEFISpecificationSupported = 1 << 3
+
 // BIOSInformationRaw contains decoded data from the BIOS Information structure
 // (SMBIOS Type 0). See Table 6 in the specification for detailed documentation
 // about the individual fields. Note that structure versions 2.1 and 2.2 are