Refactor Promotion.applied scope to query faster

* Before the scope did two joins. Joining the join table and than the
  orders table. As joining the join table is sufficient to define the
  result set removing one layer of joins significantly speeds up the
  operation on large order tables.
Merge pull request #17 from MountainRoseHerbs/admin-index-performance

Refactor Promotion.applied scope to query faster
Refactor object graph access to deduplicate loads

* Reduces the available object graph paths to access Spree::Adjustment
  instances to one.
* Reduces the amount of duplicates being loaded via performing in-memory
  scoping on associations.
* Significantly reduces the amount of lazy loads triggered within most
  order operations / populations through the elimination of duplicates.