add configurable option to clone products without copying original images

Fixes #4711
Loosen friendly_id restriction.
Fix recalculating included tax adjustments. Fixes #4671

Conflicts:
	core/app/models/spree/line_item.rb
Fix html safe when cart is empty
Use the payments currency rather than config for multi-currency.
Added data-hooks where values were empty and fixed some repeated ids.

Fixe #4573
Fix broken icons in the admin interface.

Fixes #4756
Fix broken cache on api/orders

The cache keys were not unique anymore because we were passing nil, e.g.
`@order` is not defined when rendering api/orders.json, same thing
happened with all nested objects using a instance var instead of rabl
`root_object`

Fixes #4757
Populate Order#shipment_total for users upgrading

Previous to Spree 2.2 orders didn't have a shipment_total. This should
populate that new column for legacy orders

Fixes #4684
Fall back to name on CreditCard#to_active_merchant

Gateway provided via active merchant might use those first and last name
instead of the single name string

Fixes #4728
handle credit card names with spaces

this addresses a change from https://github.com/spree/spree/commit/71d4deed1aa815a2727357f2c35e2f544f5f1959

Fixes #4770
Update payment state any time a completed order item change

Fixes #4411
Fixes entering localized amounts for payments

While running Spree in Dutch locale, adding a Payment recognizes the decimal separator as thousands separator. So when using the pre filled value (e.g. 45.21) this will be converted to a much larger amount (4521.00). The fix makes sure that a localized value is filled in (45,21 instead of 45.21).

Tested on Spree 2.2.1

Fixes #4753
Add top level rake task to run all tests
fix for payments made via /admin

orders placed via /admin were being charged twice.

See these two lines from Spree::Admin::PaymentsController:

    while @order.next; end
    @payment.process! if @order.completed?

For incomplete orders the first line will trigger callbacks that cause
the payment to be charged if the order reaches the "completed" state.
Then the second line will process the payment *again*, resulting in a
double charge.

We can't just remove the second line because orders that are already
complete won't trigger any callbacks from the first line, so these
orders need to have their payments charged manually.

The effect of the bug in our case was that Braintree rejected the second
(duplicate) billing on the payment, and this resulted in the Payment
object being marked as failed when actually it succeeded on the first
attempt. So it appeared from within Spree that a successful payment
was a failed payment.

Fixes #4768
remove reference to shipment.adjustment

shipment.adjustment no longer exists so we can kill this. also wasn't
tested, so no need to change test cases.

My understanding is with the adjustment refactoring we don't need to
deal with the open/close anymore anyway.
Add spec for overriding order token
check_authorization should use params token first

in check_authorization method.
The original code is:
session[:access_token] ||= params[:token]

So once session[:access_token] has been set, I can't reset it unless I close my browser to invalidate session.

The example scenario is below.

If I had a order url with token "http://www.example.com/orders/R176458284/token/383caf1a6dd71df4"
However, I incorrectly copy and paste it to browser and open it:
"http://www.example.com/orders/R176458284/token/383caf1a6dd71"
Now I got a unauthorized 401 page, that's correct because my token is wrong.
But after that, I try the correct link again and it still won't work since session[:access_token] has already been set and won't be set again even I pass a new params[:token]

I believe the correct logic is to check params[:token] first, once params[:token] is available, session[:access_token] should always be overridden by params[:token].

Thanks.

Fixes #4791
Better errors on coupon code failing

Assuming everything that wouldn't activate properly was "already
applied" doesn't work since anything that fails to activate but wasn't
"already applied" shows up to an end-user as "already applied". By
explicitly checking for coupons already applied we can put a more
generic error if activate fails.

Fixes #4781

Conflicts:
	core/app/models/spree/promotion_handler/coupon.rb
Refactor stock transfers variant select JS - Allow user to search for a variant by name or SKU, rather than just returning the first 25 items from a stock location

Closes #4795