CoinDenomination is now a class, not an enum; validate denominations