Handle associated adjustments when taxrate or promotion is deleted

This fixes https://github.com/spree/spree/issues/4771

Summary of the changes:

1. Take the same approach done in promotions, destroy adjustments on open orders and nullify the ones on completed orders when an associated taxrate is deleted.
2. After destroy adjustments for open orders when a taxrate or promotion is deleted, update the order and its line_items.
3. Refactor the codes to consildate the deals_with_adjustments method and move it to calculated_adjustments.rb so that it can be shared by promotion and taxrate.
4. Add rspec to cover test cases.

@huoxito 
Not sure about having this on a module called CalculatedAdjustments, doesn't make much sense to me. Perhaps we could have this piece on its own separate module?

```ruby
# For complete orders, the source will be invalid.
# Therefore we nullify the source_id, leaving the adjustment in place.
# This would mean that the order's total is not altered at all.
adjustment_scope.where("spree_orders.completed_at IS NOT NULL").each do |adjustment|
  adjustment.update_columns(
    source_id: nil,
    updated_at: Time.now,
  )
end
```

Either way for 2-2-stable it's safer imo to have this duplicated and just add the logic necessary to TaxRate and not touch existing classes implementation. wdyt?