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 
Instead of checking this couldn't we just check if it destroys the PromotionAction? It would save us from creating all those _a lot_ of stuff when running specs. I don't see how these specs are necessary.