Shipments need to check if they can get rates
before trying to get them, a private method
has been added to check if the shipment is ready
to get rates, currently it only checks if the order
has set a shipping_address, if theres custom business
logic for a specific store this is what they should
be customising instead of the refresh_rates call
which is already getting too complicated by itself.

Added tests for this and had to include a before call
to stub this same call in order for the other tests to pass.

fixes #3848