Add payment state to Order with guarded Pay transition
- Order records payments: Payments, AmountPaid, Outstanding,
IsFullyPaid (parameterless, replaces IsFullyPaid(expectedTotal))
- Pay rejects open orders, non-positive amounts, and overpayments
- 4 new OrderCompletion tests assert observable state:
PaymentOnOpenOrder_Throws_OrderStillUnpaid,
CompletedOrder_PartialPayment_IsNotFullyPaid,
CompletedOrder_PaymentsSummingToTotal_IsFullyPaid,
Overpayment_Throws_AmountPaidUnchanged
- 11 tests green (6 OrderTotal + 5 OrderCompletion)