Persist address ids on UserAddress module

Otherwise addresses would not be associated with the user at all
Replaced Taxon :position refs with :child_index=

Fixes #3390
Fixes #3956

Taxon position unnecessarily fights against the awesome_nested_set
API. By using a_n_s's :move_to_child_with_index method we can more
fully leverage acts_as_nested_set.

Conflicts:
	core/app/models/spree/taxon.rb
	core/spree_core.gemspec

Conflicts:
	backend/app/controllers/spree/admin/taxons_controller.rb
Bump aws-sdk to 1.27.0 to remove restriction for Nokogiri < 1.6
Remove position and child_index from taxon_attributes, since they're no longer used
Query only valid payments for order confirmation_required?

Prevent a confirmation step in cases where a previous selected payment
method which required confirmation failed and customer picked one that
doesnt require confirmation next

Fixes #3970
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