Deduplicate Spree::Adjustment loads for performance

* 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.
@dkubb My initial thought was writing code in-line with upstream. I think we should address the usage of weak `Hash#[]`-alike primitive and use `Hash#fetch` everywhere. I also consider to do another later pass that uses `path_params` etc to avoid the merged `params` hash with all its problems.