When a shipment is destroyed, delete all shipping rates in one query, rather than 1 query per shipping rate
Do not check stock quantity twice when saving line item

Every time an user pressed the add to cart button spree was checking
stock in OrderPopulator and before saving the line item, through
Stock::AvailabilityValidator. I believe we only need to check stock on
the LineItem model

Fixes #3434
Check if a stock location has any of a variant in stock by using an exists? query, which is faster than Ruby