Quickpay: Map options[:ip] for fraud analysis

Closes #1295.
SagePay: Truncate more fields

SagePay is somewhat particular about field lengths; transactions are
declined if those lengths are exceeded.  Now we truncate more of the
fields to match their docs:

http://www.sagepay.co.uk/file/1166/download-document/DIRECTProtocolandIntegrationGuidelinesV3%200%20(1).pdf

Closes #1293.
First Data E4: Add ability to verify a card

First Data E4 has support for $0 authorizations so we don't need to void
it.  It's a "Pre-Authorization Only" transaction rather than a standard
authorization which is a "Pre-Authorization" transaction.

Docs for it:
https://firstdata.zendesk.com/entries/407571-First-Data-Global-Gateway-e4-Web-Service-API-Reference-Guide

Closes #1290.
Elavon: Add ability to verify a card

Closes #1289.
Worldpay: Pass email and IP address

Docs for the options are here:

http://support.worldpay.com/support/kb/gg/pdf/dxml.pdf

Closes #1288.
Worldpay: Use updated address format

The original handling of address was added to Worldpay in April, 2011.
In September, 2011, Worldpay updated their API and changed some of the
names of the fields used:

http://support.worldpay.com/support/gg/index.php?page=news&sub=payment-page-changes-details-sep2011

The old fields still work (for now).  Even so, the new fields simplify
our logic some and make things more consistent with their current API
docs:

http://support.worldpay.com/support/kb/gg/pdf/dxml.pdf

Those docs no longer even refer to houseName, houseNumber, or street
fields.

Closes #1287.
Moneris: Fix address splitting

Closed by #1285.
NMI & SecurePay: Stop subclassing Authorize.Net
Authorize.Net: Update to use the XML API

Should be completely backwards compatible with the old gateway, unless
one has code that's digging around in gateway internals. If so, well,
that's what you get from messing with somebody else's privates.

Closes #1297.