dockerimg: fix Chromium support with multi-stage Docker build

OMG, people, OMG. So, an earlier commit moved us to Ubuntu, and it turns
out that "apt-get install chromium-browser" or whatever just does
nothing, and tells you to use the snap. Snap requires systemd, and if
you're using containers, you don't usually have systemd, and ... yeah,
no screenshots. There are no great stories for where to get Chromium.
There's a dude who publishes the Mint Linux packages in a compatible way
for Ubuntu. I chose instead the headless-chrome from a Docker build
recommended by the Chromedp library that we use to control Chromium.

I'm a bit snappy about all of this.

...

Replace Ubuntu 24 snap-based Chromium installation with chromedp/headless-shell
to resolve container compatibility issues where snaps don't work properly.

Changes include:

1. Multi-stage Dockerfile.base build:
   - Stage 1: Extract headless-shell from docker.io/chromedp/headless-shell:stable
   - Stage 2: Main Ubuntu 24.04 application image with required Chrome dependencies
   - Remove chromium package from apt-get install (replaced with headless-shell)
   - Add required libraries: libglib2.0-0, libnss3, libx11-6, libxcomposite1,
     libxdamage1, libxext6, libxi6, libxrandr2, libgbm1, libgtk-3-0
   - Add headless-shell to PATH so chromedp can find it automatically

2. Updated documentation in browse/README.md:
   - Document Docker multi-stage build approach
   - Clarify requirements for Docker vs local development

Benefits:
- Resolves Ubuntu 24 snap incompatibility issues in containers
- Provides self-contained Chrome installation without system dependencies
- Maintains backward compatibility for local development
- Uses proven chromedp/headless-shell for reliable browser automation
- Eliminates need for manual Chrome/Chromium installation in containers
- No code changes needed in browse.go - chromedp finds headless-shell via PATH

The headless-shell binary is automatically discovered by chromedp's default
executable search since it's added to PATH in the Docker environment.

Co-Authored-By: sketch <hello@sketch.dev>
Change-ID: se4808dca7afba802k
diff --git a/dockerimg/testdata/testcreatedockerfile_python_misery.dockerfile b/dockerimg/testdata/testcreatedockerfile_python_misery.dockerfile
index fb0e525..38073d3 100644
--- a/dockerimg/testdata/testcreatedockerfile_python_misery.dockerfile
+++ b/dockerimg/testdata/testcreatedockerfile_python_misery.dockerfile
@@ -1,4 +1,4 @@
-FROM ghcr.io/boldsoftware/sketch:538be6f879a81c5caca6bc08e5c2097c
+FROM ghcr.io/boldsoftware/sketch:a73fec46b81f26cba546a2f4c44ff381
 
 ARG GIT_USER_EMAIL
 ARG GIT_USER_NAME
@@ -7,7 +7,7 @@
     git config --global user.name "$GIT_USER_NAME" && \
     git config --global http.postBuffer 524288000
 
-LABEL sketch_context="d27408dab7235a7280709f1023a865867040b21a41ebfbe40272ad4447895482"
+LABEL sketch_context="1d1c9c1f11f73ce13926ecb7fd8d24b37aae41a512a3a8e181fb4edbea523931"
 COPY . /app
 RUN rm -f /app/tmp-sketch-dockerfile
 
@@ -17,11 +17,8 @@
 # Switch to lenient shell so we are more likely to get past failing extra_cmds.
 SHELL ["/bin/bash", "-uo", "pipefail", "-c"]
 
-RUN apt-get update && apt-get install -y --no-install-recommends software-properties-common || true
-RUN add-apt-repository ppa:deadsnakes/ppa || true
-RUN apt-get update && apt-get install -y --no-install-recommends python3.11 python3.11-pip python3.11-venv || true
-RUN python3.11 -m pip install --upgrade pip || true
-RUN python3.11 -m pip install dvc || true
+RUN apt-get update && apt-get install -y --no-install-recommends python3.11 python3.11-pip python3.11-venv || true && apt-get clean && rm -rf /var/lib/apt/lists/*
+RUN python3.11 -m pip install --no-cache-dir dvc || true
 
 # Switch back to strict shell after extra_cmds.
 SHELL ["/bin/bash", "-euxo", "pipefail", "-c"]