Implement exchanges

When a return item has an exchange variant associated to it, when the customer return is processed, that return item is not refunded, but rather the exchange variant is grouped into a new shipment for the existing order with other exchanges for the customer return. 

No new line items are created and no money is refunded for the exchanged items. 

The new inventory units are associated to the original like item so as to allow refund calculation for future returns of this item. 

There are different eligibility rules that stores can implement to determine what variants can be exchanged for, the default being any variant for the same product. 
Could you please:
1) add some comments explaining this above eligible_variants method.
2) add some comments explaining how to set:
Spree::ReturnItem::ExchangeVariantEligibility::SameOptionValue.option_type_restriction
3) default to option_type_restriction to empty array [] because I think people should be able to exchange for different colors too by default

Thanks things look good.