Email when a declined card ends a purchase

When your card was declined on the checkout page and you left without trying another, the purchase used to end as expired with no notice. It now ends as Failed with reason PaymentFailed: your billing contact gets the payment-failed email, and a TopUpFailed Event sends the topup.failed webhook. The unpaid-charges email also shows amounts in whole cents, rounded up. The same rounded amounts appear in the ArrearsPosted Event message and the billing.arrears_posted webhook; the balance API still shows the exact amount.