Refactor Spree::OrderContents#add_to_line_item so that the logic of setting the line item price based on the product options is reusable when creating an updating a line item

Closes #5274

Making Spree::LineItem#options= more robust for vanilla line items.

Using assign_attributes rather than iterating through the hash and setting the option values manually