Set Rabl config not to return json root or child root

Fixes #2208

* Fix failing order controller specs
* Fix failing address controller specs
* Fix failing countries controller specs
* Fix failing line items controller specs
* Fix failing payments controller specs
* Fix failing product properties controller specs
* Fix failing api specs
Use versioncake for versioning of API resources

Fixes #2209

* Unversion zones controller so it can be used with Versioncake for testing purposes
* Zones controller using versioncake for versioning
* Move other controllers so they make use of Versioncake
* Rename all views to make use of Versioncake
* No v2 of api yet
Removed record_log, a duplicate logging function The record_log method is not being used anywhere within Payment model and it duplicates the record_response method.

Fixes #2217
Scope thumbnails lookup in product.js.coffee

Fixes #2218
Localize datepicker date format

Fixes #2220
[api] Fix view_version_extraction_strategy for versioncake config
Validate format of email only if present

Shows only the one validation message on the order form if the user hasn't entered an email

Fixes #2214
Add currency support to models.

Fixes #2197

Add currency parameter support to Spree::Money.

Spree::Money now allows an optional currency parameter to be passed in,
which will be used if specified.  In the case where it is not specified,
the global spree configuration value will be used instead.

The foundation of multi-currency support is going to be modifying the
code to support storing the currency in the various objects used by
Spree.

The goal is to modify the code to allow:

- adjustments
- line items
- orders
- payments
- return authorizations
- shipments
- shipping rates
- variants

to eventually store and track their own currency.

Currently these objects mirror the global currency value.  As code
support improves, this will be stored in the database for these models,
or inferred from dependent models (for example, determining the line
item currency from the order currency).

Flagged money helper as deprecated

The money helper is based around having a single site wide currency.
This is instead being moved to a series of display_* calls on the models
which have both the monetary amount and currency to produce its own
Spree::Money object, which then allows us to display a properly
formatted currency on the output.

Split prices from variants & store currency in DB.

This will allow a variant to have many prices in many different
currencies.

Store currency in database.

Add currency to line items.

Line items now support currency, which can be tracked on a line
item basis.

Add currency support to orders.

Infer payment currency from order.

Support currency on shipping.

Base currencies off of order currency.

Adjustment, Return Auth, and Shipment now infer their currency from the
currency of their order.
Fix translations in admin backend

Fixes #2234
[dash] Use correct flash messages within analytics controller
fix datepicker format

Fixes #2239
refactor : update_positions

Fixes #2237

Conflicts:

	core/app/controllers/spree/admin/option_types_controller.rb
Taxonomies now have a position attribute

Relates to #2237

Conflicts:

	core/app/views/spree/admin/taxonomies/_list.html.erb
Always pass Spree::Payment's currency to gateway

Fixes #2235
[dash] Add missing end to Admin::AnalyticsController
The order object within associate_user may be current_order as well, not just @order

Fixes #2187
[Fixes #2241] Fix broken taxon field in admin
Don't allow a shipment to transition from pending to ready if the determined state is not 'ready'

Fixes #2040
[api] check if a shipment can't transition to ready state and deal with accordingly

Fixes #2229
[api] Return status 422 if shipment cannot transition to ready

Related to #2229