Authorize.Net CIM: Allow omitting expiration date

When using `update_customer_payment_profile`, the card number and
expiration date may not be available (and can't be retrieved using
`get_customer_payment_profile`). Both card number and expiration
date are required to make the update call. The Authorize.net API
allows sending a masked card number (e.g. "XXXX0027") and a masked
expiration date (e.g. "XXXX"), but `add_credit_card` will fail because
it expects the expiration date to be two integers representing month
and year.

This commit allows the expiration date to be omitted from
the passed in `CreditCard` object. If no expiration date is present,
`expdate` will return "XXXX".
Merge pull request #544 from Shopify/update-beanstream-card-types

Beanstream: Update supported_cardtypes
Auth.Net CIM: Add extraOptions support

Adds 'extra options' (as defined by the Authorize.net CIM API) to the
gateway implementation for creating customer profile transactions.

Their API documentation describes extra options as follows:

> Information in name/value pair format that does
> not exist within CIM, such as customer IP address, etc.

The test demonstrates the effects of setting one of these extra options.

Closes #546.
Update README

Pulls the details about who maintains ActiveMerchant down into the
README, and adds credit for Spreedly.

Remove reference to the long-removed script/plugin install; if folks are
adding ActiveMerchant to Rails 2.x projects, they can figure that out
for themselves.
Add NETPAY gateway

http://www.netpay.com.mx

This includes preliminary support for authorize and capture, but they
are not yet supported by NETPAY.

Closes #545.
Merge pull request #547 from Shopify/readme-update

Update README
Balanced: Add amount to refund method signature

The proper method signature for Gateway#refund is:

    def refund(amount, identifier, options={})

But Balanced had:

    def refund(identifier, options={})

With the amount optionally passed in the options hash. This deprecates
the incorrect signature (for backwards compatibility purposes) and
conforms the method to the correct signature.
Orbital: Fix void method signature

Gateway#void should have the method signature:

    def void(identifier, options = {})

But Orbital had the signature:

    def void(amount, identifier, options = {})

This fixes the signature, with a deprecation warning if the old
signature is called.

Also passes the amount (if passed via options) on to Orbital, which
allows for partial voids.

Closes #531.
Orbital: Remove the remote secondary url test

The fallback to the secondary url is already tested in the unit tests,
and the remote test for it was completely broken.
Orbital: Fix warnings in remote test
Orbital: Add void unit test

This adds a unit test for void, and also moves the deprecation test for
void from the remote test to the unit test.
Eway Managed: Add query_customer API as #retrieve

Eway Managed provides an API endpoint to return details on a stored
payment method, and this exposes that API via the #retrieve method.

Closes #549.
NetPay: Fix the signature for void

This makes the interface to #void consistent with the other gateways.
It does this by building the authorization and then splitting it later
to get the parts that we need. Passing the amount to void is still
supported via options[:amount].

No deprecation is being done for the incorrect signature since Netpay
was added so recently.

Also fixes an intermittent test failure on 1.8 caused by Hash order
dependence.

Closes #553.
Cybersource: Add check support

Allows developers to use the ACH features of the Cyber Source Gateway
by passing Check objects in place of CreditCards.

Closes #554.
Add test for avs_results not being given back
Merge pull request #472 from Shopify/add-optimal-payments-avs-cvv-results

Add avs_result and cvv_result codes to Optimal Payments
Fix broken remote tests due to changes to the test servers on Merchant Ware's side.
Use MerchantWare's v4 api for voiding transactions. Allows for voiding authorizations without first capturing them.
Fix syntax error for ruby < 1.9
Coding style fixups.