Wave goodbye to Spree.routes

Say hello to Spree.mountedAt and Spree.pathFor.

Spree.mountedAt will tell you the relative path that Spree is mounted at.

Spree.pathFor allows you to make your own *magical* Spree URLs:

Spree.pathFor('/api/checkouts/R123456789')

No more Spree.routes mumbo jumbo
Remove Spree.routes file in backend
Use apply_coupon_code route helper in backend/adjustments.js
Return permissions for orders within the API results

This allows us to determine what information / buttons to display on the interface for an order
[api] Move authorize! call for OrdersController#update to AFTER @order is defined
[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
Set RAILS_ENV=test on rake test_app

Got weird issues while building dummy apps in extensions because the
dummy development db, which we don't really care about, was not being
dropped and migrations would always fail
Use routing concern for api/config/routes.rb
Make rspec random ordering the extension default
Drop deprecation warning for `relation.sum(&:block)`
Ensure FLOAT::INFINITY resolves to proper json on api
allow product rule to match 'none'

Fixes #4587
Drop shipment address code not used anywhere
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
Distinct Order.created_between and completed_between methods

Addresses the discussion in https://github.com/spree/spree/issues/4554

Fixes #4577
Give defaults for options on product Importer
remove broken variant "deleted" scope

this "deleted" scope doesn't remove the default "deleted_at: nil" condition so it just produces a query like this:

```sql
SELECT "spree_variants".*
FROM "spree_variants"
WHERE "spree_variants"."deleted_at" IS NULL
AND   "spree_variants"."deleted_at" IS NOT NULL
```

instead you have to use the "only_deleted" scope from the acts_as_paranoid gem
see https://github.com/goncalossilva/acts_as_paranoid/blob/ae0fe74/README.markdown#filtering

example: https://github.com/spree/spree/pull/4562

Fixes #4601
Support existing credit card feature on api#checkout

about #4598
provide consistent sort order for promotions

make pagination sane for promotions.
especially true for postgres which seems to do more to keep its promise that "If sorting is not chosen, the rows will be returned in an unspecified order".
since there are no indexes on this table we just use the primary key with most recent first.

Fixes #4596
Fix thank you message on order completion

Thank you message was no more displayed since it was using a wrong
params to test when order was just completed.
This solve the issue by using flash[:commerce_tracking] param
to test when to display the message. An helper method has been
added to aviod code duplication.
Use a more relavant naming and avoid using useless
'nothing special' string as content of the flash message.

Fixes #4586