add uniqueness validation in spree preference
return 204 for PUT /orders/empty
Merge pull request #5032 from HoyaBoya/fix/empty_order_204_response

return 204 for PUT /orders/empty
allow specifying Kaminari page_method_name

only define custom page method if page_method_name != page to avoid recursion
Fixes #5035
Use the proper flash

This is not a success
Fixes #5034
Update Google Analytics

Updates GA tracking code to support Display Advertising. See: https://support.google.com/analytics/answer/2444872 for more.
Fixes #5030
Fix order merging. Fixes #5028
Merge pull request #4999 from vinsol/preference_validation

add uniqueness validation in spree preference
Wait ajax request a bit for backend spec fix
State machine for return_items.

Fixes #5041
Show flash errors for resource controller html requests

and not for js requests.
When a resource controller failed to create/update there was no indication of what had failed.

Also adds "with_model" gem to allow easier isolated testing of `Spree::Admin::ResourceController`.

Fixes #5011
migrataion to copy current product slug values into slug history table

Closes #5046
Added a `ReturnAuthorization.return_item_tax_calculator` class attribute that is set to `Spree::ReturnAuthorizationTaxCalculator` by default.

When `ReturnAuthorization#process_refund` is called, the tax calculator is called with all return items and tax is calculated and stored on each return item and then the refund is performed with the new total.
Taxation is broken out like this to allow easy integration with third-party tax services.

Also:

- Moved some rounding further out since it was causing small but noticeable differences in refund amounts (off by 8 cents sometimes, for example).  And increase precision of some return_items fields along with that.
- Refactored return authorization controller specs so that the spec data is more correct
- Added an additional validation to #process_refund to abort the refund if we know we don't have enough funds to reimburse the customer fully

Closes #5043
Fixed deprecation config in spec_helper.rb templates (spree_cmd)

Closes #5045
If ShippingCalculator has an empty string currency, it matches to all currencies

Closes #5038
Refactor Line Item Promotion Actions & Eligibility

Extract payload to a let statement.

Refactor eligible_rules to return rules.

This is helpful to understand which rules a promotion matched at some
point later down the promotion chain.

Extract line items to adjust in to Promotion.

This is part of moving the logic out of the promotion actions in to a
place that knows a little more about the context of what should be
applied.

Add actionable? call.

Move line item actionable to promotion.

No adjustments for non-actionable items.

The logic around this has changed a little, as adjustments are no longer
created for non-eligible promotions, due to the selection on actionable.

Remove products method (no longer used)

This is deprecated, as this logic is all done internally by the product
rule and related actions.

Closes #5036
Customer returns