[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
Call spree_orders, not orders in Spree::UserReporting

Fixes #4644
Remove unused Variant#gross_profit method
Memoize Order.tax_zone.

In our app, this speeds up GET /checkout/update/address
from 1 minute, 15 seconds to 2 seconds.

Fixes #4676

Conflicts:
	core/app/models/spree/order.rb
Assign request headers to Payment on checkout

This might come in handy for some gateways, e.g. Adyen, actions that require
data such as user agent and accept header to create user profiles. Previously
we had no way to access the request headers from within a gateway class.
Master should be made out of stock when its variants are created. Fixes #3767
fix failing specs for #3767, make sure the master product factory starts with some stock on hand.
fixed duplicated rows id's and name when selecting properties from prototype

Fixes #4155
Order#process_payments! no longer raises

The original use case for this was to prevent the order to complete with
payments in failed state. However this also prevents the order to
complete when a payment was already authorised and marked as processing.
This may happen when authorising a full payment amount while creating a
payment profile.

This commit essentially pushes the responsability of raising a
GatewayError to the Gateway
simple_current_order only gets incomplete orders

This currently causes an issue with better_spree_paypal_express, and
possibly other extensions.

While Spree sets the session's order_id to nil when an order is
complete, better_spree_paypal_express does not.  Therefore, a completed
order can be retrieved as the simple_current_order.

It makes sense to replicate the logic of current_order (which does not
allow completed orders to be returned) here.

Fixes #4702
No payment error when order has no payment

Follow up to 20b47028f786257c4283a33626a7d4111d9b9669
Allow payment transition from processing to void

Another follow up for having a gateway both create profile and
authorize full order amount before order transitions to complete.
Default item quantity to 1 on api/orders/:number/line_itmes
Set CreditCard#confirmation_value when reusing cards

Allow gateways to double check that value when reusing the card
Add I18n.locale for views cache
[Fixes #4673]
[Fixes #4678]
Fix FA class for picture

Oh, Picture-o, Picture-o

Fixes #4710