metropolis: fix handling GPT holes

GPT tables can have "holes" i.e. unused partition slots. These are
represented as nil values. Code walking these tables did not consider
that partition entries might be nil.
Fix the call sites and improve the gpt package documentation to
explicitly mention the need to check IsUnused.

Change-Id: I27f5db31e14a4907a84d6069ddcc267b25871f72
Reviewed-on: https://review.monogon.dev/c/monogon/+/2208
Reviewed-by: Tim Windelschmidt <tim@monogon.tech>
Tested-by: Jenkins CI
diff --git a/metropolis/pkg/gpt/gpt.go b/metropolis/pkg/gpt/gpt.go
index f5c2a907..fb011c6 100644
--- a/metropolis/pkg/gpt/gpt.go
+++ b/metropolis/pkg/gpt/gpt.go
@@ -152,7 +152,9 @@
 	BootCode []byte
 
 	// Partitions contains the list of partitions in this table. This is
-	// artificially limited to 128 partitions.
+	// artificially limited to 128 partitions. Holes in the partition list are
+	// represented as nil values. Call IsUnused before checking any other
+	// properties of the partition.
 	Partitions []*Partition
 
 	b blockdev.BlockDev