add refund capability

You will need to save the transaction reference from the original
transaction and pass it in to the gateway refund method along
with amount, currency and a transactionId (I just use the current time,
down to the second).

As far as I can tell, the transaction reference allows CardSave to
identify the card, so you can use it to refund any amount.
add referenced purchase
add tests for refund and referenced purchase
Merge pull request #1 from ravloony/master

add refund capability and referenced purchase.