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.
Prefer
```ruby
if duplicate_window
```

or can we just do

```ruby
post[:duplicate_window] = duplicate_window
```

?