fixed some scope confusion in test

All tests were testing with stock items backorderable, even when
specified otherwise.
use poltergeist instead of selenium
Fix deprecation
add pry-rescue
Change when assembly stock availability is validated

Only validate the the total stock of all varaints in an order when
entering the checkout process. This was causing payment and shipment
states to be set to nil during `order.finalize!`. At that point the
stock has been allocated to the shipment but the order was still
validating if there was enough count on hand to fufill it again.