Deprecates the Order#between method for created_between and completed_between

Addresses the discussion in https://github.com/spree/spree/issues/4554

Fixes #4597
provide consistent sort order for promotions

make pagination sane for promotions.
especially true for postgres which seems to do more to keep its promise that "If sorting is not chosen, the rows will be returned in an unspecified order".
since there are no indexes on this table we just use the primary key with most recent first.

Fixes #4596

Conflicts:
	backend/spec/controllers/spree/admin/promotions_controller_spec.rb
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