Add Spree::PromotionAction class
Remove precision on tax rates so that we get a more accurate representation of the adjustment amount

We can get rounding errors if we round the adjustments themselves, so we should only do this on the display of adjustments, rather than on the records themselves.
WIP: proper implementation of item adjustments specs

That is to say, without callbacks + factories