Switch ItemAdjustments class to working with Plain Ruby Objects

It is not this class's responsibility to go fetching/reloading/querying the database at all. BEFORE this class even gets a hold of the objects, the objects should be in their correct states. It is *wrong* (so very, very wrong) to even be doing queries in this class... this class has one responsibility: calculate all the crap and set the right values.

ItemAdjustments's responsibility is NOT to query the database in any way, shape or form.

TL;DR: code was bad, code is now good
Move determination of adjustment.eligible into its own method
ItemAdjustments now does not issue any SQL queries directly
OrderMailer now operates using plain ruby objects
Correct adjustment_spec test for update
Move copy_tax_category responsibility to OrderContents#add
Make Stock::Coordinator work with in-memory line items
Set item.pre_tax_amount in memory, not in DB
Add tax_category stubs to ItemAdjustments spec, now that OrderContents copies over tax categories
Remove all_adjustments test that assumes its still an AR association
Implement ItemAdjustments#update_adjustments, since some tests require it
Use OrderContents#add within checkout_spec to setup env correctly
Remove unnecessary testing setup + code in order/checkout_spec for update_totals
WIP: tax_rate_spec refactoring
Convert promotion_handler/cart_spec to work with non-persisted entities