Don't ignore promo action beyond the first created

Currently Spree allow users to associate multiple actions, e.g
CreateAdjustment, to a promotion however it doesn't allow a promotion to
have multiple adjustments in the same other as the backend UI suggests.

It changes the `order.promotion_credit_exists?` api so that multiple
adjustments can be created for the same promotion even though only one
of them, the one with best amount, will be eligible.

Fixes #3262
Fixes #3276
remove duplicated :payments_attributes in attr_accessible on Order

Fixes #3294
Implemented add, receive, and cancel for Return Authorizations API.

Fixes #3220

Conflicts:
	api/app/controllers/spree/api/return_authorizations_controller.rb
[api] reset permalink to nil when ActiveRecord::RecordNotUnique thrown in ProductsController
[api] Specify :id parameter for add, receive and cancel tests in return_authorizations_controller

This fixes the currently failing tests
Add missing translations for option_type_placeholder and variant_placeholder
[api] Addresses results will now include 'full_name'
[api] Ensure payment amount is set when payment attributes sent through to Checkouts API
[api] Require authorization to update an order
CreditCard model will now validate that the expiry is not in the past
Changelog entry for 549d5de4ea9fb3709de140cf12a72c51e1181dc2
[api] Include selected_shipping_rate in responses for shipments
[api] Correctly parse payment information in Checkouts API

What was happening before was that the parameters were expected to be something like:

     params[:order][:order]

Which you and I both know is just plain wrong.

There were no tests for this particular part of the Checkouts API, so it escaped our notice... until now. There are tests now.

The way I found this was by building spree-marionette and trying to submit payment information to the API, and it would return a $0 amount for the payment... which seemed very wrong.

This is now all fixed.
Return *useful* errors when a payment's source fails validation

No more 'source is invalid' nonsense
[api] Remove redundant tests from return authorizations controller spec
[api] Remove pending block from test in orders_controller_spec that passes without it
[api] Remove ConditionalGet caching from taxonomies controller

This was being tempremental in my testing
[api] convert incoming payment attributes to an array if they're passed as a Hash

This can happen when using things like Backbone.Syphon and passing in data
[api] include display_total in Orders results
[api] include display_amount in adjustment responses