Fixing support for remembering your cart after logging in as well as remembering your last order you were working on after logging out and then back in again.

Fixes #5075
Fixes spree/spree_auth_devise#220
Extracting Spree::ShippingMethod.find_by_name from create_shipments_from_params because it should be Spree::ShippingMethod.find_by_admin_name but this change needs to be handled carefully

Closes #5275
Spree::Zone#country_list fix

Just fixing wrong default value of case expression - should return an Array instance, ie. `[]` instead of `nil`.

Fixes #4827
Add state_text to StockLocation

I'm working on a revision to `Spree::TaxCloud`, and we use the `StockLocation` addresses pretty heavily. It'd be a huge help to have the `state_text` method that exists in the [`Spree::Address` model](https://github.com/spree/spree/blob/master/core/app/models/spree/address.rb#L39).

Fixes #4872
Bump version.
Bump next beta.
Create Spree::Core::ControllerHelpers::Order module's test
Fixes #5298
Create Spree::Core::ControllerHelpers::Auth module test

Closes #5293
Fix deprecation.
make sure we get the current order for use in the cart as well. Refactored some shared code as well.

Fixes #5300
Simple fix for payment source.

Steps to reproduce the issue:

1. Add an order through the admin interface
2. Attempt to pay via cheque for a user who has a credit card number
stored in their profile.
3. Submit the form

This will 500, because params[:card] is set from the form on the initial
page for the radio button from the credit card profiles.

This is a simple, though incomplete fix for the issue. A proper fix
would be to change the form so that params[:card] is qualified by the
payment_method which it belongs.

There are also likely issues with multiple payment methods which support
profiles, as there is likely to be confusion between them. This should
suffice for now.

Fixes #5209
Refactor Spree::ProductHelper#variant_price_diff

* Change the logic of the code to make it easier for the next
  commit.
* Remove duplicate code from the HTML generation.
Change #variant_price_diff to handle when the product amount is nil
Change #current_order to always lock the order when querying

* I believe some of the problem with the deadlocks is happening because
  of inconsistent locking, and updating without acquiring a lock properly. As a
  test I am going to enable it across the board and see how things perform.

Conflicts:
	core/lib/spree/core/controller_helpers/order.rb
	frontend/app/controllers/spree/checkout_controller.rb
Add inverse_of for more associations involved in cart processing

Conflicts:
	core/app/models/spree/return_authorization.rb
	core/app/models/spree/zone.rb
	core/app/models/spree/zone_member.rb
Add validations to stock items and stock movements
Change Spree::OrderUpdater#update to be performed inside a transaction
Fix spec formatting and spelling
Refactor CreateItemAdjustments#perform to not use an unscoped query

* The previous query for adjustments would return every adjustment for every
  order's line items. This would then result in a huge list of ids passed into
  the NOT IN clause, causing a huge generated SQL query to be executed.
* Refactor code to be simpler
Add adjustment total to the order summary