Adding Spree::LineItem#discounted_money so that we can display formatted Spree::LineItem#discounted_amount in our views

Closes # 5124
Don't reimburse return item if preferred method is invalid

Closes #5205
prevent checkout with all invalid payments

This commit attempts to address an issue where it is possible to checkout with only invalid / failed payments. I believe the issue is due to process_payments! only considers pending payments. If every payment is failed / invalid, it will return true, this allowing the ```after_transition: :payment``` to continue to the next steps.

The results is that if a payment process fails legitimately for the first try i.e. Gateway rejects or invalid to Active Merchant, someone can simply do order.next! a second time and just move on. This is regardless of capture true/false or the Spree configuration on ```allow_checkout_on_gateway_error```.

What's contained in this PR.

1) break out of after_transition block to make testing easier.
2) explicit return false when conditions not met
3) add check for no valid payments after process_payments
4) test changes and additions

Steps To Replicate
1) Add a known bad payment to Stripe Gateway i.e. card_XXXXX
2) Invoke order.next and receive a gateway error.
3) Invole order.next again.

Expected
1) Failure and still at payment state.

Actual
1) Moved on to confirm state and no errors.
Allow a shipment to transition to shipped when its order is canceled

Closes #5203
Only compute an amount no greater than the objects amount.
Compute amount based on remaining amount so that multiple promotion actions don't cause negative balance.
Fix AvailabilityValidator for saved records

Previously availability only considered inventory_units on the
target_shipment of a line_item. Since target_shipment is not persisted,
a saved line_item would become invalid when its variant ran out of
available inventory even if the inventory_units were already reserved.

Fixes #5208
This resolves #5132. The admin manual order cart is much more like the frontend now in that you start off by adding items to the cart(line items). You then add an address, the shipments are calculated based on the frontend rules you have set up but you as an admin can ignore those rules and muck with the shipments on the Shipments tab. You can also skip adding items to the cart altogether by just entering an address and then adding shipments manually, the way the old backend admin did before this patch.

Extracting the advanceOrder function into a function in the Spree namespace so that both the shipmentsJS and line_itemsJS can share it

Advancing the order after we add variants on the cart page. If we have already created shipments, then when we edit a line item the order gets reset to the address state. This call pushes it back to the payment state and destroys the old shipments, recreating them to match the new line item state.

In checkout.rb we first create_proposed_shipments but here we check if addresses are valid. If not we need to destroy_all instead of delete_all so that the inventory_units that were created by create_propsed_shipments will also be destroyed and not clutter up the DB

Fixing the Split tool. IF success we reload the page, else display a generic error. Would like to in the future provide more specific errors. Not allowing splits to the same shipment nor to a shipment or location that does not have the stock and is NOT backorderable. Next commit will have a boatload of automated tests.

Adding appropriate tests for the splitting of shipments.

Fixes #5166
Update _autocomplete_line_items_stock.js.erb

Noticed this extra text in the merge commit.
Fixes #5211
Use full path to line_item partial
Fixes #5214
Fix importing source with payment profiles.
Do not create a reimbursement after making an RMA with no exchange items
Fixes #5215
Fix cc stub.
Fix copy/paste mistake.
Reimbursement Type instances dont respond to #reimburse. Fix reimbursement engine, fix tests to more closely resemble actual data
Fixes #5218
Fixes #5220
Change product_url to product_path.

I'm not sure why product_url was introduced, but I'm currently
encountering issues in production where it's not respecting subdomains,
HTTPS, and ports correctly.

Nearly everything else in Spree links to stuff using the _path helpers,
which I like a lot better.

Closes #5221

Move price in to an offers block.

This is what the correct schema.org product implementation is.

Reference: http://schema.org/Offer
Scope stock locations before looping through them
Process only checkout payments from Order

Looping through a method call Order#pending_payments only to call
`process!` on those payments is misleading. Payment#process! will
actually set the payment state to "pending" so Order#process_payents!
could authorize / purchase a payment twice given the payments already
touched by gateways will have a pending state.

hopefully Order#unprocessed_payments makes it more clear which payments
exaclty are supposed to be processed when order completes
Its duplicated a few lines below

Closes #5226
Handling different currencies when importing orders/line items. Also making sure that errors with the line item are being raised and causing the import to stop

Closing #5107