Make auto_capture? a per payment configuration

Fixes #4302
Do not use orders_per_page to determine amount of zones returned in Admin::ZonesController

Fixes #4305
Display 'Capture events' table in the Payment show page

Fixes #4301
Allow stock items to only touch their variant after save if their in_stock state changes

Currently when a stock item changes its count on hand (e.g. an order is placed), it touches the related variant, which touches its related product (thus invalidating product cache). For users that do not show inventory counts on their product page, this code enables the ability to keep product page cache warm until a stock item changes its in_stock state, rather than on every purchase of that stock item.

Fixes #4299
Duplicate variants when duplicating products

Fixes #4029
Fixes #4264
Added rescue block in UpgradeAdjustments migration to catch issues where calculators no longer exist

Fixes #4274
Fixes #4278
Add script to backend so rails g can run
Check if spree route proxy responds to root_path

Some stores may not define a root_path under spree engine. Currently
only spree_frontend component does that.
Add product with track_inventory false via backend

Fixes #4309

Conflicts:
	api/app/helpers/spree/api/api_helpers.rb
	api/spec/controllers/spree/api/variants_controller_spec.rb
Remove useless currency.nil? check
Specify branch for spree_auth_devise in sandbox script so we can use local git repos
Add implementation of 'Considered Risky' state for Orders

If an order is 'Considered risky' (if Order#is_risky? returns true), then the order will go into a 'Considered Risky' state. This means the order will need to be approved by an admin before it can be moved into the final 'Complete' state.

This builds on the work in #4021.

Fixes #4298
Add note about Risk Analysis features to Core
Use a test email address in checkout_spec so that I'm not subscribed to random mailing lists
Use translated text for shipment in AdjustmentsHelper
Really show all adjustments in the admin backend
Make order-update concurrency safe

When two order-updates happen at the same time, we can loose one of the
updates without this change. This locks the row on select, ensuring that
any subsequent changes don't get overwritten.

ORIGINAL COMMIT: https://github.com/bonobos/spree/commit/be9bb2a6bcfc72f186e4641516fdd00fc2b724f0
ORIGINAL AUTHOR: https://github.com/magnusvk

Additional Notes: We discovered an issue with the Order API. Trying to get our change reviewed/accepted into Spree to minimize future upgrade pain points.

extensive concurrency fixes across frontend, core, api

these changes were made at the suggestion of Spree to get a more comprehensive fix in beyond API.

* made current_order helper take hashey args to support multiple lock option
* change existing code to use hashey args
* renamed filters to have with_lock to indicate we are locking on the read. all of these filters were for write actions on the controller (from what i saw)
* incorporated magnusvk fix for checkout api controller (https://github.com/bonobos/spree/commit/817be320dacca498d8c4bbf755c46458ec2b4dcf)

Fixes #4286
Add dependent destroy to category mapping table

Fixes #4312
Do not allow adjustments to be edited or destroyed if they are closed
Do not attempt to compute an adjustment if it has no source