better/faster capybara select2 macros

Existing select2 (and variants) used sleep(1) to wait for the select2
dropdown to appear and then executed some javascript to select the
desired option.

This commit replaces that with a standard capybara page.find(...).click.
As well with avoiding the sleep(1), this raises an exception if the
desired option doesn't exist.

Fixes #4043
Let rails handle RecordNotFound in orders controller

Fixes #4044
Avoid invalid query "SELECT DISTINCT DISTINCT" in order search

Weird issue. The double DISTINCT seems to be added by kaminari, couldn't
reproduce it in a spec or in clean rails app

e.g. This query would also result in the same error (or any query
similar within Spree)

    Shipment.where(inventory_units: { id: "a" }).includes(:inventory_units).uniq.page(1).to_a
Adding support for spree_xhr_post, spree_xhr_put, spree_xhr_delete

Fixes #4071
Backend taxon controller now using Spree::PermittedAttributes

Fixes #4069
Remove unnecessary frontend/backend query scoping on ShippingRate

Related to #4067
Only sort available shipping rates in Spree::Stock::Estimator#shipping_rates

Related to #4060