Allow transactions to forcibly be failed per request

Mostly needed because refunds cannot easily be tested against the
sandbox, but I still need to check what happens on failure.

Since it was odd to just add to refund, added to sale and void as well.
Also test coverage for `create_failure`, since I needed to allow
customizing the message.

Note: I'm not 100% sure what structure comes back on these failures, so
this might not be totally sufficient for everyone - likely just missing some things that would come back.  Since the feature didn't previously exist, I'm counting it this not breaking existing tests.