Check if a stock location has any of a variant in stock by using an exists? query, which is faster than Ruby
When a shipment is destroyed, delete all shipping rates in one query, rather than 1 query per shipping rate
Delete all shipping adjustments immediately prior to deleting all shipments in Order#create_proposed_shipments

What would happen before is that each shipment would find its adjustments and call destroy on them. We don't necessarily care about all that happening because once the new adjustments have been created then the order will be updated correctly.
Only call update_order + update_inventory callbacks for LineItem if is destroyed or changed
Delete all inventory units (rather than destroy)

When a shipment was previously destroyed, it would call destroy on each InventoryUnit object. This took a long time if there were a lot of inventory units. There's no need to call destroy, as there's no callbacks in this model for destroy. All shipment needs to do is *DELETE ALL* its inventory units, and so this is what's going to happen now.
Handle 404 responses from alerts.spreecommerce.com

Fixes #3716
Fixing backend sub-menu navigation selection by making match_path for tabs work. Tests included now.

Fixes #3683

Conflicts:
	backend/app/helpers/spree/admin/navigation_helper.rb
no longer autocomplete values in product properties fields

Fixes #3695
remove horizontalNav js from admin this extension was causing warnings on the js consoles since it was using outdated jquery functions, and hasn't been updated this js plugin was here to allow ie7 < users to see the backend navigation using full-width

Fixes #3720
fix the ActiveRecord::ReadOnlyRecord exception when the @product is null when update the variant

Fixes #3718

Conflicts:
	api/spec/controllers/spree/api/variants_controller_spec.rb
Fix syntax error.
Fix ReadOnlyError when destroying StockItem

StockMovement is a readonly object so we can't delete them. And by that
logic I believe we shouldn't clear stock items from the database either
otherwise we will have stock movements associated with non existing
stock items

Fixes #3727
Fixes #3723
Revert "fix the ActiveRecord::ReadOnlyRecord exception when the @product is null when update the variant"

This reverts commit 1e0dc2e97ffd6577178efbe3a628520c00390dd1.
Remove deprecated methods

* BaseHelper#money
* Order#price_adjustments
* Order#price_adjustment_totals
* ShippingMethod#zone
* ShippingMethod#zone=
* Product#variants_with_only_master
Bump Rails version + spree branch reference in README
Prep for 2.1 release

Conflicts:
	README.md
Bump to 2.2.0.beta
Do not generate a new identifier for a payment when it is re-saved

Fixes #3733
remove unnecessary semicolon in screen.css.scss

Fixes #3729
[backend] Move 'Taxonomies' configuration out from under 'Configuration' to 'Products' subheading