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