Adds proposed functionality which enhances the ability of extensions to ...

...customize line items and the entire cart composition process

Followup to https://github.com/spree/spree/pull/5062 (that PR was for 2-3-stable)
this was removed in favor of just using nested attributes.  i ran into some big problems building nested objects before the line items to save.  nested attributes, IMO, is the right thing to do anyways