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 
I suppose you added this because you're worried about the order totals?

It looks like a bad idea to me. `order.update!` is probably one of the worst ideas we had. It's also calling private api of LineItem and I think `order.update!` already takes care of touching the whole spree world so we wouldn't need the line above.

Could we just stick with the exact same thing it was doing before? delete for incomplete orders and nullify for complete orders? Even if say this let orders with wrong totals, not sure it does, I think it's worth it not calling `order.update!` or recalculate anything here because I can imagine this taking forever depending on how much data you have. Also we update totals in many places so chances are orders would get back to proper values as customers advance checkout.