Ipay88: Yet another signature formatting fix.
Allow Valitor gateway to accept other currencies
Merge pull request #922 from Shopify/decimal-currencies-for-valitor

Allow Valitor gateway to accept other currencies
Adds stripe key to allowed options in generate_options
Fix JSON ParserError typo in Bitpay
Merge pull request #928 from jnormore/master

Adds stripe key to allowed options in generate_options
Paymill: Fix authorizations

In May 2013, Paymill added some response codes:
https://blog.paymill.com/new-response-codes/

And there's now a way to trigger declines and other errors using their
test gateway.

This commit now accounts for the fact that a decline may have 4XX HTPP
status code or it may have a 200 status code.  Success in Paymill means
that it's a 200 status code && the response_code within the body is
20000.  Except for the Void operation.  In that case, just a 200
status code is sufficient since the body doesn't include a
response_code.

The Purchase operation returns a 4XX for a failure but the Authorize
returns a 200 for a failure.  Now when an authorize fails on the Paymill
side, Active Merchant once again reports that transaction as having
failed.

This commit also fills the response with the appropriate response
message based on the response_code since the body doesn't include the
text.  This ActiveMerchant adapter now handles the response description
mapping to give end users a better idea of what went wrong.

Closes #923.
Braintree Blue: Allow specifying credit card token

This makes it possible to use an explicit card token, rather than
Braintree automatically generating it. If no token is passed it
continues to be generated automatically.

Also exposes the credit card token in the response.
Braintree Blue: Allow specifying the customer id

This allows specifying a customer id when storing a credit card rather
than having one generated automatically.
Braintree Blue: Scrub invalid emails and zips

Braintree is strict with emails and zips, which can cause unexpected
failures. This simply substitutes nil if a known-bad email or zip is
passed in so that the transaction doesn't fail due to the "bad" input.

This also improves the remote tests, including giving more guidance on
tests that require further configuration before they'll pass.
Braintree Blue: Return :credit_card_token

Having the token at the top level of the params hash when applicable
means much less digging around in the internals of how Braintree
structures their results.