Revise purchase/consume.

+ Let client be able to get error code (by throwing exception) so they can handle it. Notice this is required for situations like buying items you already bought or consuming items you don't have.
Test coins.

Coin is managed product that once bought, they are consumed, so we can buy again later.