Use Authorize.Net's XML API

Work in progress. Supercedes #1219.

TODO:

- [ ] Figure out mapping for `x_solution_id`.
- [ ] Figure out how to pass currency code (`x_currency_code`).
- [ ] Match semantics of old `Response#authorization` including tests for backwards compatibility.
- [ ] Match semantics of old `Response#params` as closely as possible.
- [ ] Replace `AuthorizeNetGateway` with `AuthorizeNetXmlGateway`.
- [ ] Flatten unit and remote tests.