restrict cost_price to admin users through the api
Fix typo in item_adjustments
refactor the variant price for product.js.coffee. Thanks @gmacdougall
Make sure cart adjustments partial gets rendered if there are shipments.
Update edit.html.erb
Order summary view checks if delivery step has been passed in the checkout flow before displaying any shipping charges.
Order#checkout_step_index always return a integer
Load current user roles on api requests
Remove tables from includes on index query which are not needed an result in bad performance with many Variants
Add admin flag on variants related cache template

We want to make Variant#cost_price only available for admins so we need
to make sure difference cache keys are set as per current user role
otherwise the first template cached would decide whether or not the
attribute would be available (rather than the user role itself)
Order history should be by completed_at, not created_at

Otherwise, orders that use an old cart appear way out of order. This
will show completed orders first, ordered by completed_at desc, then the
rest ordered by created_at desc.
Include spree_current_user on custom user template

spree/api expects either spree_current_user or an api token to
authenticate users. Since backend no longer sends the api token we need
to make sure custom auth apps have spree_current_user available in api
component
Update Rails version in README
Allow users address assignment over API.
Add data-hooks to the admin order detail side menu

Fixes #5086
add debugger gems to sandbox

in the same way as in [common_spree_dependencies](https://github.com/spree/spree/blob/adca6cf/common_spree_dependencies.rb#L34-L41)

Closes #5078
Refactor stock related service objects to deal with inventory units.

Prior to this change, stock related service objects (coordinator, packer,
prioritizer, package, adjuster) were tightly coupled to orders and line
items, such that they would only create a set of shipments for the set
of line items for an order.

This change makes those objects work with inventory units, which enables
future enhancements that would create shipments for an order that are
not necessarily tied to the initial purchase (e.g. upcoming exchanges
work).

Fixes #5042
Customer returns

Introduces customer returns which represent getting merchandise back from the customer. The presence of a customer return (and it’s associated return items) indicate that a customer has returned something and the store has received it. A customer return also has an associated stock location which indicates where the customer has returned the merchandise.

Customer returns replace the “Receive” button behavior in return authorizations. Receiving an RMA would be achieved by creating a customer return and selecting all the items in an RMA. Given that a customer return is not tied to a particular RMA, it allows a store to accurately represent what is returned. The logic to whether each particular item should be accepted or rejected will be handled in a future PR.

Once the customer return is created, the admin can refund the customer for the customer return’s total amount similar to the refund button in RMA.

Fixes #5055
Refactor ensure_updated_shipments call to be within the OrderContents and OrderPopulator classes to ensure consistency. Fixes #5082
Remove defunkt allow_backord_shipping config. Fixes #4573