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 
Another reason I removed the deals_with_adjustments method from create_adjustment.rb is that it has a bug. The left outer join doesn't check adjustable type. It may link an order to a line_item adjustment. To fix it basically we'll have the exact same code as it is in create_item_adjustments.

Anyway, I don't see reason why we should have duplicated codes. I'll create a new mixin and move the deals_with_adjustments in there.