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. 
@JDutil fair point, was just putting something in as a default. i was thinking that in an initializer it could be overwritten like so
```ruby
Spree::ReturnItem::ExchangeVariantEligibility::SameOptionValue.option_type_restriction = "size"
```
Let me know if you have another preferred way of doing this.