Add index to spree_orders for user_id & created_by_id

Addresses potential performance regressions discussed at #4582 in the last_incomplete_spree_order method arising after that method changed in c455e1a

Fixes #4584
Deprecates the Order#between method for created_between and completed_between

Addresses the discussion in https://github.com/spree/spree/issues/4554

Fixes #4597
Spree::Variant.deleted? returns Boolean

This change brings the `Variant` behavior in line with the `Product` behavior:

https://github.com/spree/spree/blob/master/core/app/models/spree/product.rb#L134

Fixes #4497
Speed up admin/shipping_methods with includes()

Loading the zones and calculators with an `includes()` call seems to noticeably speed up the loading of this page and dramatically reduces the page's requests to the db.

Fixes #4534
[api] Allow users with read-only access to access /api/orders/:num
[api] Use stub instead of should_receive for has_spree_role? calls

This method is now called in the Rabl responses, and may be called more than once. Therefore it's better to just stub it and have it always return that value, than to use should_receive which expects only one call
[api] Move authorize! call for OrdersController#update to AFTER @order is defined
Reload order to access proper order data

Fixes #4625
Add Payment#cancel!

This is now called when an order is cancelled, and can do one of two things:

1) It will call the payment method's cancel method if it has one (BraintreeGateway is so far the only gateway to have one)
2) It will call credit! and act like cancelling an order used to

This is part two of the fix for spree/spree_gateway#145
Fix issue with stock movement routes.

The standard stock movement route depends upon stock_location being
specified. The StockMovementsController depends on a stock_location_id
being specified, so the correct stock movement route is the one nested
under stock location.

Using the non-nested route leads to an error "Couldn't find
Spree::StockLocation without an ID".

Fixes #4631
Create payments in shipped_order factory too
Bypass calculator factory create callback which doesn't seem to be firing

Could be a factory_girl bug.

Time spent debugging: ~1 hour
CreditCard#expiry= used to assume the incoming format was that which was enforced by Frontend's JS.

No longer true.

Fixes #4429
Fixes #4653
Load a StockItem's variant, even if it's been soft deleted

Alternative patch for #4652

Fixes #4651
Fixes #4652
Always redirect to the payments screen after creating a new payment

Fixes #4628
Use correct path in new_order_spec

related to #4628
adding I18n to Ship link on admin area
[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