fix N+1 query performance issues on TaxRate.match method
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
[order importer] Set shipping rate to be the selected shipping rate

Conflicts:
	api/spec/models/spree/order_spec.rb
More robust namespace adjusting

As discussed in https://github.com/spree/spree/issues/4479, the existing migration would generate inaccurate class names due to the fact that `demodularize` will only select the very last part of the class name.

So, for instance,

`Spree::Calculator::Fedex::Ground` would be changed to
`Spree::Calculator::Shipping::Ground`, which would trigger an `uninitialized constant` exception. The desired new class name is
`Spree::Calculator::Shipping::Fedex::Ground`, and this suggested PR will handle those class name changes more appropriately.

Fixes #4520
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
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
Merge branch '2-0-stable' of github.com:spree/spree into 2-0-stable