Normalize Product#slug on update

friendly_id only generates the slug by default when it's nil. Spree
however allows users to set it directly in the backend and we need to
make sure a valid slug gets persisted otherwise users might run into
route errors trying to see the product

Fixes #4451
Set charset=utf-8 on api default Content-Type

Fixes #4423
Add Montenegro to Countries Seed

Montenegro is missing from the country seeds file. I pulled the information from the [ISO page for Montenegro](https://www.iso.org/obp/ui/#iso:code:3166:ME).

Fixes #4465
[sample] Use new preferences syntax in shipping_methods
Using `find_each` instead of `all.each` to improve memory

This syntax will run our migration over the `Spree::StockTransfer` model in batches, which will improve performance on stores with high numbers of stock transfers.

Fixes #4473
Use `find_each` rather than `all.each`

Perform the CreateDefaultStock migration in batches to lower memory footprint.

Fixes #4475
typo fix in CreateDefaultStockMigration

Fixes #4474
Improving performance via find_each and includes() in UpdateAdjustmentsStates migration

Fixes #4459
Fixes #4468
Removing .includes() call from MigrateTaxCategoriesToLineItems

Addresses the bug discussed in https://github.com/spree/spree/issues/4460

Note that this will make the migration slower, but less buggy in the case that LineItems refer to deleted Variants or Products.

If the `acts_as_paranoid` gem can be modified to allow "unscoped" `includes()` calls, then we can reinstate the performance improvement.

Fixes #4460
Fixes #4471

Conflicts:
	core/db/migrate/20130802022321_migrate_tax_categories_to_line_items.rb
Fixes issue where deleting and creating product properties at the same time caused an error on the product page stating the product could not be found.

When deleting a product property it was deleted from the database and the row was hidden (not removed) on the frontend. On submitting the form, the now deleted property id was still present causing the error when trying to load the property with that id from the database.

Fixes #4467
Added further translations in the admin backend

'Choose Location', Payments count, and variants splitting translations added
add currency to Spree::Api::ApiHelpers.order_attributes

as per @radar's [suggestion](https://github.com/spree/spree_hub_connector/pull/20#discussion_r10730423)

Fixes #4462
Don't assign shiping_category if it exists

Fixes #4401
Change big variant rabl template to have consistent image structure with small variant rabl template. Fix potentially colliding cache keys.

Signed-off-by: Jordan Brough <git.j@brgh.net>

Fixes #4457
remove mail method configuration

Fixes #4377
Add tax_total back to api_helpers#order_attributes

Conflicts:
	api/app/helpers/spree/api/api_helpers.rb
Use correct c for choose_location
Add missing choose_location, existing_shipments and new_shipment_at_location translations
Set cost in Shipment#add_shipping_method

Running into weird total issues after https://github.com/spree/spree/commit/a7f16ac85ee7b250341eeb131a518922d931dd3d
See failing spec in https://github.com/spree/spree-adyen/pull/3
Append lib_name to dummy databases

Avoid conflict between test databases for spree core and extensions for
example on the same host