use .try on @differentiator into delivery step

in order to prevent NoMethodError when it is nil

Fixes #3984
Add changelog entry for #3946
Persist address ids on UserAddress module

Otherwise addresses would not be associated with the user at all
Introduce channel attr to Order model

Could be set when importing orders from other storefronts
Make api helper attributes class attributes

To make it easier to append more attributes. Other applications /
extensions can append their own stuff without having to override
methods. e.g.

        Spree::Api::ApiHelpers.order_attributes.push :locked_at
Persist address ids on UserAddress module

Otherwise addresses would not be associated with the user at all
Stub calculator to return a non-zero value in create_item_adjustments test
Promotion calculator must have something to discount within cart_spec

Otherwise no adjustment will be applied
Fix issue where CreateItemAdjustments action was not creating more than one adjustment

This was caught by the tests(!). This is why you good test coverage is vitally important.
Stub item_total and ship_total on order in coupon_spec so that promo adjustment 'wins'
[api] Cache products/show view

This can reduce the time it takes for a request to /products from > 1 second to < 75ms

Before: 1048.7ms
After: 65ms

If a product property, option value, option type, image or variant of a product changes then the product will be touched which will invalidate the cache.
Use templates for option_values + option_types in products/show to DRY up things
finish moving promotion_rules_helper into backend

PromotionRulesHelper was duplicated across frontend and backend
* core/app/helpers/spree/promotion_rules_helper.rb
* backend/app/helpers/spree/promotion_rules_helper.rb

Since this is only used from backend, this deletes the file in core and
moves the spec into the backend.
Set postgres host when creating a test_app

Fixes #3988
Allow inventory tracking control (enable/disable) at the variant level. This retains the site-wide inventory tracking flag, but also allows this type of control down at the variant level.

Fixes #3974

Conflicts:
	core/app/models/spree/stock_item.rb
	core/app/models/spree/variant.rb
	core/spec/models/spree/variant_spec.rb
Use different id on hidden field so associated labels work as expected

Fixes #3981
position should not be present in taxon_attributes
Taxon sorting for 2-1-stable fix

Fixes #3989
[backend] Show additional and included tax in order summary
Remove duplicate included tax in order summary