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.

Fix adjustment destroy

* Fixes adjustments for line items and shipments being destroyed as
  dependants.
* Has the same semantics prior to the in-memory scope changes.

Use MemoryScope#restrict to filter adjustments
Add circle CI setup