Shopping cart - Iteration 2

In this second iteration, I made the changes suggested in the review for Iteration 1. The major changes are the following:

1. Asserting the total cost of the items in the shopping cart throughout my Features.
2. Using scenario outlines for `coupon.feature` and `shipping_estimate.feature`.
3. Testing edge cases throughout (ie, adding more than one coupon; adding items now out of stock, multiple products in cart, etc).

Thanks!
In this case, tables might be overkill. The entirety of the object behavior is hiding in here without other descriptions. For similar cases, tables work, but at some point I expect to see a few scenarios outlining the different cases.