`Button` hard-coded `spacing.icon_spacing` as the gap between its icon and
its text. A theme that gives a button its own metrics wants to set that gap
too, so it becomes a `ButtonStyle` field, overridden by `Button::gap`.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>