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 is an awful side effect of the fact that we lumped together params from the browser with currency and shipment.  i need this 'cast' of the opts hash in order to be able to use 'permit'.