Stripe: Add ability to verify a card

For Stripe, a verification is an `authorization` followed by a `void` of
that authorization.

The minimum authorization Stripe allows is 50 cents so we use that.

Relevant docs:
https://stripe.com/docs/api#create_charge

We're now taking advantage of the ability of a MultiResponse to ignore
the result of some of the responses.  In this case, we don't want the
`verify` to fail if the `void` fails.  The important part is the
`authorize`.

Closes #1279.
Paypal: Add ability to verify a card

Paypal supports zero dollar authorizations, but only for mastercard and
visa.  Relevant docs:

https://developer.paypal.com/docs/classic/paypal-payments-pro/integration-guide/WPDPGettingStarted/#cardverifications

To verify a card, we do a zero dollar `auth` if it's mastercard or visa.
Otherwise, we do a $1 `auth` followed by a `void`.

We take advantage of the new ability in MultiResponse to ignore the
results of parts of the response.  In this case, if the void fails, we
don't care.

Closes #1280.
Authorize.net: Add ability to verify a card

I see some discussion out there on the interwebs around Authorize.net
supporting $0 authorizations for Visa only but it looks like support for
it is dependent on the merchant account sitting behind the gateway
account.

To make `verify` work for all authorize.net accounts, it's implemented
as a $1.00 `auth` followed by a `void`.

Closes #1281.
Braintree: Add ability to verify a card

It looks like Braintree has some support for zero dollar authorizations:

https://support.braintreepayments.com/customer/portal/articles/1429320-card-verification

However, the feature depends on the card type and is hampered by the
fact that some underlying processors don't support it.  Braintree
accommodates this by attempting a zero dollar `auth` and if that fails
they then attempt a $1 `auth`.

We're going to stick with a simpler approach.  Do a $1 `auth` and then a
`void`.  It'll always work, and it's only one `auth` API call.

This adds `verify` to both Braintree Blue and Braintree Orange.  Added
bonus is that Transax gets it too since it shares behavior with
Braintree Orange.

Remote tests are working across the board.  I didn't add unit tests for
Braintree Blue because those unit tests are somewhat off the beaten path
than our unit tests for other gateways due to the fact that we're using
the Braintree gem.  The unit tests there aren't the easiest to mock out.
I suspect we're relying on the remote tests for Braintree Blue in the
cases where the unit tests are deficient.  Long term, I suspect we'd
like to move away from using the gem, but I'm not sure how feasible that
is at this point.

Closes #1282.
Enhance gateway generator to support verify

We now support the verify operation in a few gateways and we'll
be gradually adding support in others over time.  This commit helps the
operation get implemented in new gateways as they're added.

Closes #1283.
PayPal Express: Add funding source support

Closes #1284.
Stripe: Add new supported countries

Closes #1286.
Optimal: Add IP address to requests

Closes #1276.
Pin: Add authorize & capture support

See #1268.
Pin: Add update support

Closes #1268.
Vindicia: Stop using the vindicia-api gem

I was not able to run the remote tests due to not being able to get a
Vindicia dev account in a reasonable amount of time. If/when I get one
I'll run them, but would be great if anyone with credentials could try
them out (or provide them to me).

That said this ended up being quite straightforward as the gem wasn't
actually doing much.
Remove dependency on the money gem

No longer used or needed; the code will continue to work if Money is
passed in since `respond_to?` checks are used to unwrap passed in Money.