Review methods/ queries when adding items to cart

We're worrying way too much and too soon by trying to hit every single
entity on the spree ecosystem. I'm trying to come up with a proof of
concept here for a faster checkout / cart process. By going less times
to the db and trying to always pass objects around so we can have fresh
references without having to blindly refetch stuff from db

Trying to contents.add with benchmarck/ips (only need to understand the
results better, maybe it doesnt make sense for this use case)

  # brand new order (Order.create)
  order.contents.add Variant.find(2)

Current master:

Calculating -------------------------------------
                 add     1.000  i/100ms
-------------------------------------------------
                 add     20.217  (± 9.9%) i/s -    100.000

This branch:

Calculating -------------------------------------
                 add     4.000  i/100ms
-------------------------------------------------
                 add     47.878  (± 8.4%) i/s -    240.000
Avoid reloading objects when on adjustments recalculation
keep working with ar object when theyre available
dont call + on nil and moar notes to self
Stick with object given in Adjustment#update!

Help us fixes a couple more specs where the order reference was being
lost
Give an Order to `compute_amount` where needed

For line item adjustments order was being reloaded every time one had to
compute calculate the adjustment amount

Theres probably a better way to build this `compute_amount` interface,
code looks dirty, but at least we have a better direction now on how
to avoid Order Loads when we dont really have to.
Use line_items already loaded in OrderUpdater#recalculate_adjustments

Attempt to use as many loaded objects as possible through out
OrderUpdater internals so we do all the calculation over the same
objects.

Once you call `order.line_items` activerecord will use those objects all
the way the stack, lets keep using them whenever possible so we dont
have to do explicit `reload`s

this fixes a couple coupon specs
Avoid line items reload in CreateItemAdjustments

If we reload those line items we lose the reference previously loaded
through `order.line_items` and so `order.update_totals` will re
calculate adjustments over and out of date line item instance. This make
sure we work with the same line item instances all the way in Coupon
handler
Push merged item to order.line_items collection

So the order updater can work with the accurate set of items without
reloads
Create the adjustment from the order failing example

Just like we do inside the class otherwise amounts wont be computed /
recalculated properly
Create adjustment from the adjustable in TaxRate

Currently once the adjustment is created it will be recalculated on
ItemAdjustments (via callback in Adjustment) and the item will be given.
There we loop through the item.adjustments to call update! on them.

I think this is an AR detail we might need to remember more times in the
future. At least as of Rails 4.1.8 when we pass an object to `create()`
as an attribute it doesn't add that record to the collection
automatically.

e.g.

        Tax.create! order: order
        order.taxes => []
Add shipment handling back in order_contents

That can be part of another rewrite review
Drop line_item from order collection if quantity 0
Explicit reload in assertions for order_details_spec

Couldn't understand why the `reload` was not necessary in current master
branch. My guess is the `order.reload`s inside OrderContents would some
how burst the cache. Doesn't make much sense yet though considering the
example script and the request run in different threads and are dealing
with different instances.
Drop item adjustments update call

Currently the line item adjustments are already updated when / if a
tax adjustment is created via line item save callback which in turn
triggers an adjustment save callback that calls ItemAdjustments#update

The same code will also be executed during `recalculate_adjustments`
which will update / recalculate ALL order adjustments (including the
ones linked to line items). Our build doesn't have any example to
support these recalculations being called in all these places

ItemAdjustments update on the order was also changed to only run once