Use Authorize.Net's XML API

Work in progress. Supercedes #1219.

TODO:

- [x] Figure out mapping for `x_solution_id`.
- [x] Figure out how to pass currency code (`x_currency_code`).
- [x] Match semantics of old `Response#authorization`.
- [x] Match semantics of old `Response#params` as closely as possible.
- [x] Replace `AuthorizeNetGateway` with `AuthorizeNetXmlGateway`.
- [x] Flatten unit and remote tests.
`AVS_RESULT_CODE, TRANSACTION_ID, CARD_CODE_RESPONSE_CODE, CARDHOLDER_AUTH_CODE  = 5, 6, 38, 39` => `AVS_RESULT_CODE, TRANSACTION_ID, CARD_CODE_RESPONSE_CODE, CARDHOLDER_AUTH_CODE = 5, 6, 38, 39`