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.
Because the coupling between these gateways is tenuous at best, and killing the inheritance allows them to usefully diverge going forward. I'm not a fan of trying to DRY the gateways at a high level like this.