Initial work on how to extend spree to support extensions that customize line items.

Adds the build_options hook for extensions to process their own cart params.

Fixes #4546
Address feedback and fix specs. refs #4546