Avoid invalid query "SELECT DISTINCT DISTINCT" in order search

Weird issue. The double DISTINCT seems to be added by kaminari, couldn't
reproduce it in a spec or in clean rails app

e.g. This query would also result in the same error (or any query
similar within Spree)

    Shipment.where(inventory_units: { id: "a" }).includes(:inventory_units).uniq.page(1).to_a
Use flash.now for coupon errors

Fixes #4034
[backend] nil check for shipping_method in orders/_shipment

fixes #4025
Show destroy flash messages in admin backend

Fixes #4032
add a test for always_include_confirm_step
Really always include the confirm step preference

Fixes #3945
Add customer_id to gateway options

:customer and :email are both the email, it could be useful to uniquely
identifiy a customer on the gateway

Fixes #4051
Permit name to be passed through in source_attributes
Don't show confirmation step if payments are empty
[frontend] Set flash.now for gateway errors in CheckoutController

Fixes #4034
[frontend] Set flash.now for gateway errors in CheckoutController

Fixes #4034
Use new show_flash erorr in payments/edit.js.coffee
No longer fill in backorders for incomplete orders (i.e. abandoned carts)

Fixes #4056
Make the parameters consistent across orders#create and orders#update

Fixes #4057