Add a money-back path for pay_now users: within the refund window they can
trigger a full refund of the upfront charge, which cancels the subscription
immediately and revokes their bank connections (keeping imported data). A
refunded_at column records it and blocks a second refund.
Eligibility (pay_now variant, active subscription, inside the window, not yet
refunded) is centralised in ExperimentOffer::canSelfRefund and surfaced on
the billing screen so the frontend can show the button and deadline.