improve stub_authorization! for controller specs

Previous implementation didn't work with accessible_by. This now creates
a (possibly custom) ability which is stubbed out in the controller.
fix promotions spec
Dont stub authentication twice in admin/products_spec
Use local var order in case partial is rendered outside orders controller.
Store.default determines the default store

Existing implementation of Spree::Config.default_store was saving the
default store value. Now it simple calls Store.default, which will query
the database to find the default store.

fix template_rendering_spec
current_store for controllers/views on frontend

Checks current_store instead of Spree::Config for settings which have
been moved. This allows a Single store load per request.
Avoid failures due to ordering in rabl_cache_spec
Only downcase coupon code when it exists

Fixes #4515
Move current_store to controller_helpers/common

It should be available for controllers that dont inherit from
StoreController too. e.g. SessionsController in spree_auth_devise
Allowed for client side validation of phone number and zip code to be turned off.

The server side validation can be turned off but the setting did not affect the javascript validation.

Fixes #4510
Add store code and default boolean to support spree-multi-domain.
Update store migration for when apps already were using spree-multi-domain.
Only create store from preferences when there is no store.
Money no longer includes Monetize methods. https://github.com/RubyMoney/money/issues/381
Use Ruby 1.9.3 compatible syntax.
Need to set a code in the store sample.
Remove unused cached_default method.
Refactored API VariantsController scope.

The Spree::API::VariantsController commits a few crimes:

1. Using .active in an attempt to get non-deleted variants, when active
has nothing to do with active, and instead determines if the Variant has
a price in the current currency.

2. Uses || for a permission check instead of &&

3. Explicitly tests a users role rather than testing permissions

4. Uses unless/else

5. Duplicates code

This refactored code should be easier to read, and more correct.

Fixes #4519
Drop windows.location.reload when editing tracking number
Fix issue where payments can get their credit cards disassociated from them.

This was initially discovered when integrating with the paper_trail gem, which
calls dup in an after_update to try to capture the changed state of the
object, however, this could happen elsewhere and it is good to be
defensive here.

Fixes #4512