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]
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.
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
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
Add #in_stock? method to Spree::Variant

As proposed by @jdutil in spree/spree_wishlist#37

[Fixes #3163]
Split line items across shipments
- Easily create new shipments from existing shipments
- Move items between shipments on an order
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 #3168]

They were mostly failing due to a js error and shiping labels

Conflicts:
	core/spec/models/spree/shipment_spec.rb
Ensure correct classes on stateSelect, stateInput elements in address
spec

Fixes #3165