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 dont think so, a possible better approach could be set the order state back to first checkout step so customer would have the chance to review their orders and go through each checkout step again. Also once totals are updated theres a good chance the order / payment balance wont be right anyway (if the adjustment is eligible)

I havent gone through the use cases but for 2-2-stable still sounds better to me to just leave as is. order.update! is overkill and I suspect and it will cause more trouble.