Contract standard for accepting any ERC20 (or ERC721?) as payment

@bugduino was asking how to accept ERC20 as payment in a single transaction.