Set transactionReference if not set

And change orderId to transactionId.

 - Generate transactionReference if not set
 - orderId -> transactionId
 - pass transactionReference to purchaseResponse
 - fix transactionReference in completePurchaseResponse

Not sure if we should add some random code, but I guess most people either set the transactionId or don't have more then 1 purchase per second.

But this does break the people using setOrderId, or should we add those as methods referencing the transactionId, for BC?
But isn't that how it's called in the other gateways?