balance due if payment is less than order total

also had to fix some other logic to fix the specs after my changes, I noticed
there are some issues that this might affect #4563 #4550 #4605

Fixes #4637
Fix payment state on backend orders/payments_spec
Updating price must touch variants to bust cache.
Update item count and totals on Order#merge!

Fixes #4610
[backend] Correct variant image reference in variant_autocomplete.js
[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
Bump rails to ~> 4.0.5
cancel and void icons should use fa-times
Use fa-check, not fa-ok
Refer to selected shipping rates directly

This means that rates can be available on shipments, but not shipping methods

Useful for extensions like spree_easypost which only set rates and don't have shipping methods
Bump to 2.2.2
Bump to 2.2.3.beta
Set CreditCard#confirmation_value when reusing cards

Allow gateways to double check that value when reusing the card