AddBasketItem
Adds quantity of productId at unitPrice to the basket, creating the basket on its first item. Adding a product already in the basket adds to its quantity, at the new price. The constraints are the command's shape: the gateway checks them before the basket decides, and answers a violation wow.command.invalid (400).