Refactor into AdjustmentSource

Dry up code from promotion actions and tax rate by moving into adjustment source.

Passes order object instead of id

fixes #5785
Revert "Google analytics stored in js file."

This reverts commit 7abc41af0c7ecb71554462c31f7ff7a5d76f488d.

fixes #5796
Make product slug index unique.
default_scope expects a block as its sole argument

fixes #5799
Eagerly load product images and prices using preload.

(i.e. explicitly using a separate query) so the orders are respected even when
the product search is conditioned on an included association.

fixes #5798
Revert recommendation to use modules for extensions.

The current suggestion causes problems in development environment (or any environment where classes are not cached).

When rails autoreloads classes it first undefines them and then redefines them. However, the modules in the `xxx_decorator` files are just re-loaded without being undefined first.  See http://git.io/22TgYQ. That works fine for the `class_eval` approach but not for the include-module approach.

This reverts commits:

- 3f78c436797a3b9b74aef4a9b3504257a93e4e76
- e344325e89a583016782367cb28b413a4628cf75
- 697ace67a5f245510c682e53bfb1b1ffcb14faca

fixes #5801
Improve admin product picker performance.

Fixes #5607
Lockdown monetize to fix specs for now.
Update ruble symbol.
Require latest monetize.
Enable/disable every input (input, textarea, select, etc.) in payment forms
fixes #5809
Use order’s completed_at to determine time since purchase

* Added another eligibility validator that ensures an order is completed before running any of the other validators
* Changed the TimeSincePurchase validator to check the order’s completed_at date instead of the inventory_unit’s created_at date. This fixes an issue where the time since purchase of an inventory unit that is part of an exchange shipment would be calculated as the time since the exchange was created instead of the time since the original purchase was made.

fixes #5819
Only consider eligible promos for used_by?

Previously this would consider a promo used as long it was assigned to
an order, even if this promo was not eligible (as in the case of when it
was overridden by a better promo).

In order to check if a promo was eligble, it needs to change the way the
associations were joined, as it now needs to check on adjustments
instead of just if the order is associated with the promotion.

The test is changed to set up a full promotion with adjustments, and
actions.

fixes #5805
Cleanup i18n duplication.

This removes duplicated i18n patterns for backend keys.

fixes #5814
fix http/https fonts links

fixes #5807
Update payment_total on void.

Currently an orders payment total is not updated when a payment is
voided. This leads to a variety of things which are not correct. If $100
is paid on an order, then that payment is voided, it will reset the
payment_total to $0, rather than leaving it at $100.

Fixes #5822
Fixes #5825
Fixes #5246
Show error message when adding items to order in admin fails

Fixes #5820