fixes #207
Add compression, compression-level, and force-compression inputs to the build and bake workflows. Each input sets the attribute of the same name on the BuildKit image exporter. The prepare job makes sure that compression is uncompressed, gzip, estargz, or zstd, and that compression-level contains only digits. Because of this, the inputs cannot add other attributes to the exporter. The inputs apply only to output: image. For output: local, the workflow ignores valid values and logs a warning.
The new test jobs build test/compression.Dockerfile, which keeps the gzip base layer of alpine. If force-compression does not convert that layer, the test fails. These jobs push only on events other than pull_request, so I ran the same builds from my fork: https://github.com/onedr0p/github-builder/actions/runs/41712959010. I turned off signing there, because the signing step expects the identity of this repository. With force-compression, all layers were zstd. Without it, the alpine layer stayed gzip. With the default values, all layers stayed gzip.