Fix payment state logic to only result in failed if there are no valid payments.
Allow Product.orders

One thing that our store admins need to do often is find the orders that have been made for a given product. This can be easily achieved by adding these `has_many through:` lines. This seems like a capability that other stores might find useful as well.

Fixes #5247
Don't try to compute based upon adjustment total.
Don't try to compute based upon adjustment total. Part 2 git fail.
Change order updater to refresh shipment rates and amounts on change

* This change will refresh the shipment rates and amounts when a
* completed order state changes.

  One specific example would be if the order line item quantity is
  changed in the admin menus we want the order shipment and shipping
  total to update.

Fixes #5235
Fixes #5222
refs #4428

Conflicts:
	core/spec/models/spree/shipment_spec.rb
Fix spec.
Finally fixes last backend spec.
Fallback to a default route. Fixes #5261
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