Add destroyed variants to be removed from a shipment

* Previously, if a variant was destroyed it was impossible to remove it
  from a shipment. This change allows all variants to be removed.

Fixes #5268
Delete nil parameters to prevent undefined method hash_with_indifferent_access when nil address passed.
All gateway errors should render from same gateway error partial.
Update orders.promo_total in OrderUpdater

orders.promo_total field wasn't getting updated in certain cases, like when you add the promo first and then a line item afterward.
the *adjustment* got updated and the correct number was displayed in the cart, but the orders.promo_total value was incorrect.

Fixes #4607
Gateway errors should be consistent with other payment errors.

Fixes #5270
Fix using check payment method in admin.
Refactor Spree::ProductHelper#variant_price_diff

* Change the logic of the code to make it easier for the next
  commit.
* Remove duplicate code from the HTML generation.
Change #variant_price_diff to handle when the product amount is nil
Change #current_order to always lock the order when querying

* I believe some of the problem with the deadlocks is happening because
  of inconsistent locking, and updating without acquiring a lock properly. As a
  test I am going to enable it across the board and see how things perform.

Conflicts:
	core/lib/spree/core/controller_helpers/order.rb
	frontend/app/controllers/spree/checkout_controller.rb
Add inverse_of for more associations involved in cart processing

Conflicts:
	core/app/models/spree/return_authorization.rb
	core/app/models/spree/zone.rb
	core/app/models/spree/zone_member.rb
Add validations to stock items and stock movements
Change Spree::OrderUpdater#update to be performed inside a transaction
Fix spec formatting and spelling
Refactor CreateItemAdjustments#perform to not use an unscoped query

* The previous query for adjustments would return every adjustment for every
  order's line items. This would then result in a huge list of ids passed into
  the NOT IN clause, causing a huge generated SQL query to be executed.
* Refactor code to be simpler
Add adjustment total to the order summary
Change adjustments controller to only display eligible adjustments
Fix the discount to be the order adjustment total

* The promo_total does not include manual adjustments
Fix the cookie domain used for google analytics

* This is a test fix to see if GA will start tracking sessions again.

Conflicts:
	frontend/app/views/spree/shared/_google_analytics.html.erb
Refactor gateway error reporting to be more extensible
Add error parameter that includes the gateway error message