Load promotion rules after app initialization

So that they can make proper use of `Spree.user_class` which is only
defined on the app spree.rb initializer

[Fixes #3152]
Fixed FlexiRate Calculator when max_items is set

[Fixes #3160]
Don't save invalid addresses.

Bypass default scope in Spree::Order#associate_user!

This is more consistent with the Rails 4 implementation of update_columns: https://github.com/rails/rails/blob/8ac8eb66c19d352dde548fc5c9a632ffbb586abe/activerecord/lib/active_record/persistence.rb#L276. Also, it won't break if an app developer adds a default scope to Spree::Order.
Use rspec render_template for layout specification [Fixes #2974]

Improve product spec, too many repeated spec and create(:product) calls
Stock::Estimator should select the most affordable shipping rate by default

Fixes #3137
Stock::Estimator sorts shipping rates by cost

Related to #3137
Use shipping_method.adjustment_label in Shipment#ensure_correct_adjustment

Fixes #3138
Include ENV['RAILS_CACHE_ID'] within preference cache keys
Specify class name for calculator association in calculated_adjustment

Otherwise, top-level classes that include this module will have an association that looks for ::Calculator, rather than Spree::Calculator
Update to latest selenium-webdriver

In a (vain?) attempt to see if frontend stops hanging
pass country_id as data to jQuery.get

if your default url options happen to include ?locale=en then
the previous implementation would end up generating:
api/states?locale=en?country_id=49 instead of
api/states?locale=en&country_id=49

Fixes #3108
compare strings to strings when transitioning to shipment states

Fixes #3105
Require Shipping Calculators to Inherit from Spree::ShippingCalculator

[Fixes #3116]
Add #in_stock? method to Spree::Variant

As proposed by @jdutil in spree/spree_wishlist#37

[Fixes #3163]
[api] Add display_price to products API

This allows for an easier rendering of the proper amount when using things like a JavaScript library to interact with the API
Fix backend order split shipments action

When moving an item to a existing shipment from the same stock location
it would make two requests to remove items from the same shipment.
Instead it needs to remove from one shipment and then add the same
quantity to another shipment

[Fixes #3161] [Fixes #3162]
Fix build specs and split shipment edit button [Fixes #3167]

They were mostly failing due to a js error and shiping labels
Ensure correct classes on stateSelect, stateInput elements in address
spec

Fixes #3165
[api] Return attachment URLs using the avaialble styles

This is so an API endpoint can render all the styles of an image, not just the Big One.
[api] Add CHANGELOG entries for products+images API changes