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
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.