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
Load a StockItem's variant, even if it's been soft deleted

Alternative patch for #4652

Fixes #4651
Fixes #4652

Conflicts:
	core/spec/models/spree/stock_item_spec.rb
Remove unnecessary test for order.products
Use font-awesome-rails for the icons
Use .fa-check in place of .fa-ok, and .fa-reorder in place of .fa-bars
More reasonable order payment state logic

For simplicity sake. Admin users can still go to the orders specific
payments section for more detailed info on payments
Remove Spree::Stock::OrderCounter

This is unused as of 15122ec, when the Stock::RemainingPacker was
removed.

Fixes #4659
Revert "Refactor Shipments API & JS."

This was acciddentally committed. Original is 5224bf294163b168fd1ee5cc760187ec9d83c26f

This reverts commit 715311656d14f5ff7cfe9e837f8998721496c8f4.
Revert "Add shipments API back under orders"

This reverts commit ab17831db1f1f2c8a7fca78dda97e9f7e13dbeef.