Fix Spree::OrderContents#add to handle deleted line items properly

This branch fixes a bug where a deleted line item would receive `#valid?` which would cause a before validation hook to execute. The hook would attempt to set a default value, which would explode since a deleted object is frozen.

This branch rearranges the code so that one the line item is deleted the `#valid?` method is not called on it.