Refactor Shipments API & JS.
Fix for #4234.
Implement basic callback systems on ItemAdjustments

This allows stores to hook into before/after events when the promotions and taxes are calculated for line items and shipments.

Fixes #4483.
make sure we use adjustment_total for the shipping adjustment migrations instead of cost
Fixes #4608
Speed up admin/shipping_methods with includes()

Loading the zones and calculators with an `includes()` call seems to noticeably speed up the loading of this page and dramatically reduces the page's requests to the db.

Fixes #4534
Scope Order#all_adjustments to look up adjustments only for the order

Fixes #4537
[api] Allow users with read-only access to access /api/orders/:num
Return state_text within address responses

This way, stores cna have an easy way of displaying what state users have chosen
[api] Use stub instead of should_receive for has_spree_role? calls

This method is now called in the Rabl responses, and may be called more than once. Therefore it's better to just stub it and have it always return that value, than to use should_receive which expects only one call
[api] Move authorize! call for OrdersController#update to AFTER @order is defined
only apply line_item_adjustments on selected products when product rule exists.
Revert "make sure we use adjustment_total for the shipping adjustment migrations instead of cost"

This reverts commit 24883b8409a668fca0dc8c11cad17de11cde511a.
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 validates_attachment to Spree::Taxon icon
Fixes #4629
Fix 500 when updating order email to something inconsistent with the associated user's email

Fixes #4614
Rename poorly named spec

Fixes #4616
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
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