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