Set CreditCard#confirmation_value when reusing cards

Allow gateways to double check that value when reusing the card
Refactor Spree::ProductHelper#variant_price_diff

* Change the logic of the code to make it easier for the next
  commit.
* Remove duplicate code from the HTML generation.
Change #variant_price_diff to handle when the product amount is nil
Change #current_order to always lock the order when querying

* I believe some of the problem with the deadlocks is happening because
  of inconsistent locking, and updating without acquiring a lock properly. As a
  test I am going to enable it across the board and see how things perform.
Add inverse_of for more associations involved in cart processing
Add validation to Spree::StockItem for count_on_hand
Change Spree::OrderUpdater#update to be performed inside a transaction
Fix spec formatting and spelling
Change item adjustments to reset item totals before processing

* Some of the computations use Spree::LineItem#total, which may include an
  #adjustment_total that was previously set for the line item. The value could
  have changed due to a quantity change so it is necessary to reset this to 0
  before starting the process of updating adjustments.
Refactor CreateItemAdjustments#perform to not use an unscoped query

* The previous query for adjustments would return every adjustment for every
  order's line items. This would then result in a huge list of ids passed into
  the NOT IN clause, causing a huge generated SQL query to be executed.
* Refactor code to be simpler