[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