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

Conflicts:
	core/app/models/spree/order_contents.rb
	core/app/models/spree/order_populator.rb
	frontend/app/controllers/spree/orders_controller.rb
Enhances ability of extensions to customize line items and the entire cart composition process.

Fixes #5087

Conflicts:
	core/app/models/spree/order.rb
	core/app/models/spree/order_contents.rb
	core/app/models/spree/order_populator.rb
	core/spec/models/spree/order_populator_spec.rb
Updates changelog for extension options.

Fixes #5167

Conflicts:
	core/CHANGELOG.md
Address feedback and fix specs. refs #4546

Conflicts:
	core/app/models/spree/order_contents.rb
	core/app/models/spree/order_populator.rb
	core/spec/models/spree/order_populator_spec.rb
Fix issue in Rails 4.0 where object needs to be reloaded explicitly afetr re-association.