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 
Yes. I added it because of the last scenario described in https://github.com/spree/spree/issues/4771 where an order is in confirm state and the taxrate or promotion is deleted the order total doesn't get updated, which results in mismatch of order total and itemized costs.

Is this good enough reason to call order.update! here?