sketch: add multi-architecture binary support

Build both amd64 and arm64 Linux binaries and embed them both.
Simplify API to use single LinuxBinary(arch) function for architecture
selection. Update copyEmbeddedLinuxBinaryToContainer to detect Docker
server architecture using 'docker version --format' and automatically
use the correct binary.

This enables sketch to work correctly on both x86_64 and ARM64
Docker environments without requiring architecture-specific builds.
Unsupported architectures return nil instead of panicking.

Co-Authored-By: sketch <hello@sketch.dev>
Change-ID: sd498605bf58e984ek
diff --git a/dockerimg/dockerimg.go b/dockerimg/dockerimg.go
index 728175c..4cba98f 100644
--- a/dockerimg/dockerimg.go
+++ b/dockerimg/dockerimg.go
@@ -1161,9 +1161,15 @@
 
 // copyEmbeddedLinuxBinaryToContainer copies the embedded linux binary to the container
 func copyEmbeddedLinuxBinaryToContainer(ctx context.Context, containerName string) error {
-	bin := embedded.LinuxBinary()
+	out, err := combinedOutput(ctx, "docker", "version", "--format", "{{.Server.Arch}}")
+	if err != nil {
+		return fmt.Errorf("failed to detect Docker server architecture: %s: %w", out, err)
+	}
+	arch := strings.TrimSpace(string(out))
+
+	bin := embedded.LinuxBinary(arch)
 	if bin == nil {
-		return fmt.Errorf("nil embedded linux binary reader, did you build using `make`?")
+		return fmt.Errorf("no embedded linux binary for architecture %q", arch)
 	}
 
 	// Stream a tarball to docker cp.