[frontend] Load taxon if params[:taxon] exists in ProductsController

Fixes a small bug where searching *twice* for the same term results in the taxon 'scope' being forgotten
Speed up admin/shipping_methods/_form with local var

I saw [almost 200](http://en.wikipedia.org/wiki/List_of_sovereign_states) calls  to `Spree::Zone Exists (0.3ms)` and thought there must be a better way.

Here we put the `@shipping_method.zones` into a local variable so we can hit that instead of the db.

Notes:

* The `to_a` method is necessary to force Rails to evaluate the `zones` scope. Otherwise we still get hundreds of db calls.
* If we want to, we could always replace the array of `Zones` with an array of `ids` -- replacing `to_a` with `.pluck(:id)` and having the checkbox tag read `include?(zone.id)` instead of `include?(zone)`. However I'm not sure this additional change is necessary.

Fixes #4535
No longer use insufficient_stock_lines in view

Fixes #4665
Fixes #4664
No longer caching insufficient_stock_lines

Fixes #4664
Fixes #4666
Stock::Quantifier must take a variant, not an id

@brchristian pointed out that the previous resolve_variant_id logic was
broken when a variant had been deleted.

This removes the resolve_variant_id private method from Quantifier, and
reuqires that a variant object be passed in. Finding associated variants
should be the resposibility of the caller, and the code to load a
variant unscoped need not be here.

Fixes #4660
More reasonable order payment state logic

For simplicity sake. Admin users can still go to the orders specific
payments section for more detailed info on payments
Remove Spree::Stock::OrderCounter

This is unused as of 15122ec, when the Stock::RemainingPacker was
removed.

Fixes #4659
Revert "Refactor Shipments API & JS."

This was acciddentally committed. Original is 5224bf294163b168fd1ee5cc760187ec9d83c26f

This reverts commit 715311656d14f5ff7cfe9e837f8998721496c8f4.
Revert "Add shipments API back under orders"

This reverts commit ab17831db1f1f2c8a7fca78dda97e9f7e13dbeef.
Drop api/checkouts#create and api/checkouts#show

They already exists in api/orders
Move find_order to before_filter in api/orders
Drop order.update! in api/orders#empty

All work to empty an order should probably stay in Order#empty no need
to evil update!
OrderContents#add already saves a line item
Use OrderContents#update_cart in api/orders to update it

Rather than duplicating stuff already provided by spree_core
Drop useless api/orders#next! private method
Drop line items stuff from api/checkouts controller
Drop duplicated call in api/line_items#update

OrderContents#update_cart already call Order#ensure_updated_shipments
Updating price must touch variants to bust cache.
Call spree_orders, not orders in Spree::UserReporting

Fixes #4644
Update item count and totals on Order#merge!

Fixes #4610