Add more strict dependencies

Using ">= 1.0.0" is likely to give us trouble any time a dependency
releases a major version
Remove append_view_path from api ControllerSetup

That line was preventing us from overriding templates within other
application or extensions

Fixes #3450
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
fixes #3849
Simplify `can_get_rates?` in Shipment
Reference Spree::Order to prevent error
Revert "Remove append_view_path from api ControllerSetup"

Since Api::BaseController inherits from ActionController::Metal we do
need to use append_view_path for rendering views inside api/app/views
and the main app views dir

Extensions should probably also use append_view_path themselves if they
want to override an api template

This reverts commit b0378f5f73927d40a34acb8777b004957588e1aa.
Remove duplicated responder configs and include from api

ActionController::Rendering already includes
AbstractController::Rendering and we had duplicated respond_to calls
in basecontroller and controller_setup
Fixed Spree::Api::ProductsController#index to accept multiple ids

Fixes #3886