Dont advance order state when adding an item to cart

As of d02f67dbbf7e8ae1f61b65066c2a3a8234796a11

Admin would click to add a item to the order which would create the line
item and shipment but because we advance the order to address state the
shipments would be destroyed Order#ensure_available_shipping_rates

Cant see why we needed advance order in the first place.
Verify inventory when target_shipment is provided
Fix 500 when updating order email to something inconsistent with the associated user's email

Fixes #4614
Rename poorly named spec

Fixes #4616
There's no orders#index in spree_frontend
Lazyload variant associations in api/variants
Remove useless return in the show action from the products controller

Fixes #4635
Update CONTRIBUTING.md

Remove versions of Spree and Rails, as that info is provided by the Gemfile.
Update CONTRIBUTING.md

Require gemfile.lock too.
Refactor Shipments API & JS.

Conflicts:
	backend/app/assets/javascripts/spree/backend/shipments.js.erb
Reload order to access proper order data

Fixes #4625
Add Payment#cancel!

This is now called when an order is cancelled, and can do one of two things:

1) It will call the payment method's cancel method if it has one (BraintreeGateway is so far the only gateway to have one)
2) It will call credit! and act like cancelling an order used to

This is part two of the fix for spree/spree_gateway#145
Add missing shipments_api route in backend.js
Fix issue with stock movement routes.

The standard stock movement route depends upon stock_location being
specified. The StockMovementsController depends on a stock_location_id
being specified, so the correct stock movement route is the one nested
under stock location.

Using the non-nested route leads to an error "Couldn't find
Spree::StockLocation without an ID".

Fixes #4631
Improve Order#products and Order#variants methods

* Now they are an active record relations instead of an array
* All the hard job is done by the database engine now

Fixes #4615

Conflicts:
	core/spec/models/spree/order_spec.rb
Optimize touch_taxons on product.

This will touch all of the taxons and taxon ancestors for  a product
using a constant number of updates (2, one for taxons, one for
taxonomies).

Previously the number of updates would be 2 * the number of taxons &
taxon ancestors, as it would update the taxonmy for each taxon on each
update.

Fixes #4636
[api] Add ability to assign user_id through Orders#update

Hi, my name is associate_user. You might remember me from smash comedies like 'CheckoutsController'.
[api] Return billing address in user data

Useful for when you want to find a user by their email address, and have their address information display on a page

Like this one http://cl.ly/image/3S1P0W2g0W42
Add shipments API back under orders
CreditCard#expiry= used to assume the incoming format was that which was enforced by Frontend's JS.

No longer true.

Fixes #4429
Fixes #4653