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
Fix variant price validation to allow nil

* The check_price validation already asserts presence, or not depending on
  the system config, and unnecessarily validations are done when
  the master variant price is not required.

Conflicts:
	core/app/models/spree/variant.rb
Fix line item quantity validation to be more precise
Refactor availability validator to use a guard clause
Fix bug where line item quantity cannot be set to zero for out-of-stock items
Change an inventory unit to be removed when it's line item is removed

* This will fix the foreign key violation when a line item is removed
  in the cart.
Add required attributes to required product admin form fields

* Adjust spec example inputs to allow submit with that restrictions.
Change master variant to be saved so it will raise an exception on failure

* When save does fail it was hidden previously
Only reload shipment items on item adjustment

The original issue fixed by
https://github.com/spree/spree/commit/a4b209c7288198124a735d99203102d86be6a935
only affected shipment calculations. Removing the reload for LineItems
allows them, and more important their descendants to be eager loaded.
Pass item to Adjustment#update to avoid N+1
Change address factory to reuse state before creating one
Fix whitespace