Only destroy tax adjustment for open order when the associated tax rate is deleted. For closed order just nullify the source_id.

Update line_item & order when adjustments are deleted.

Add rspec tests to cover cases where adjustments get (or not get) destroyed when taxrate/promotion is deleted.

Move deals_with_adjustments to a separate mixin.

Add new mixin to core

Revert previous changes to remove unnecessary tests.

Remove order.update! and simplify rspec.

Fixes #4828
Fixes #4771

Conflicts:
	core/spec/models/spree/tax_rate_spec.rb
Rework ReturnAuthorization-InventoryUnit relationship

* Create a join table: `ReturnAuthorizationInventoryUnit`
  * Allows inventory units to be part of multiple RMAs (e.g., if an initial RMA was cancelled) while still retaining historical data
  * Migrate existing data into the new table
  * Drop the `inventory_units.return_authorization_id` column
* Start using nested attributes for adding/removing InventoryUnits to ReturnAuthorizations
  * Remove the `API::ReturnAuthorizationsController#add` endpoint (use nested attributes instead)
* Pave the way for exchanges with an `exchange_variant_id` field
* Update the admin interface for `Admin::ReturnAuthorizationsController`:
  * No longer group inventory units by variant.  This will be important for allowing per-unit data, such as for exchanges

Created by @richardnuno and @jordan-brough

Fixes #4907
Fix failing payment spec.