Improve default return eligibility rules

Verifies that a return item’s inventory unit is in a shipped state and that there are no other reimbursements already associated with the inventory unit.

process_inventory_unit! is now called after calling attempt_accept as we wouldn’t want to process the inventory unit if it’s not accepted.

fixes #5788
Validate return item’s exchange variant eligibility

Add a model level validation that checks whether a return item’s exchange variant is eligible for exchange. The validation will be performed when an exchange variant is present and the exchange variant has changed (including on creation).

fixes #5789
Refactor into AdjustmentSource

Dry up code from promotion actions and tax rate by moving into adjustment source.

Passes order object instead of id

fixes #5785