Add I18n.locale for views cache
[Fixes #4673]
[Fixes #4678]

Conflicts:
	api/app/views/spree/api/shipments/small.v1.rabl
	frontend/spec/features/caching/products_spec.rb
Fix specs that were broken by f1658936aa021a9cded44d4df59eab0c884ac06e in 2-2-stable

Fix bad conflict resolution.

Fixes #4713
Fix FA class for picture

Oh, Picture-o, Picture-o

Fixes #4710
fix typo in data-hook.
Closes #4718
fix font-awesome icons for admin taxons tree

Closes #4717

Conflicts:
	backend/app/assets/stylesheets/spree/backend/plugins/_jstree.scss
Add data-hooks to admin/products/new and admin/products/_form

Similar to https://github.com/spree/spree/pull/4521, this commit adds data-hooks that make manipulation of the admin/products/new page considerably easier, cleaner, and more succinct.

Fixes #4682 and #4683

Conflicts:
	backend/app/views/spree/admin/products/_form.html.erb
use fa-check since fa-ok is no longer available.

Fixes #4720
Update return_authorization.rb

This should be a belongs_to since the stock_location_id is on the spree_return_authorizations table. Currently it throws an error
```
     Failure/Error: trial.purchase!({trial_item.id => :return})
     ActiveRecord::StatementInvalid:
       PG::UndefinedColumn: ERROR:  column spree_stock_locations.return_authorization_id does not exist
       LINE 1: ..._locations".* FROM "spree_stock_locations"  WHERE "spree_sto...
                                                                    ^
       : SELECT  "spree_stock_locations".* FROM "spree_stock_locations"  WHERE "spree_stock_locations"."return_authorization_id" = $1 LIMIT 1

Closes #4620
updated ga snippet

Closes #4567
Dont mess unrelated records on CreateItemAdjustments#destroy

Stores could have their whole adjustments history nullified or destroyed
for incompleted orders.

Huge thanks to @athal7 for reporting the issue
Always pass currency to Spree::Money for multi-currency.
Need to only try specifying currency in case order doesnt exist yet.
Update Rails Version in README.md

I just demo-ed Spree the other day for a talk and had to change my rails version from 4.0.4 to 4.0.5 to get everything to work (obviously incredibly minor but I think worth fixing.)
make sure we only build the year when it's there. Validtion error otherwise.

Fixes #4725
Reorder short circuit evaluation of Estimator#shipping_methods
Changing currency variable according to google analytics docs

Fixes #4743

Conflicts:
	frontend/app/views/spree/shared/_google_analytics.html.erb
Refactor Spree::ProductHelper#variant_price_diff

* Change the logic of the code to make it easier for the next
  commit.
* Remove duplicate code from the HTML generation.
Change #variant_price_diff to handle when the product amount is nil
Change #current_order to always lock the order when querying

* I believe some of the problem with the deadlocks is happening because
  of inconsistent locking, and updating without acquiring a lock properly. As a
  test I am going to enable it across the board and see how things perform.
Add inverse_of for more associations involved in cart processing