Ensure existing tests pass and fix for discount calculation

As it stood, eight tests failed.  Have fixed these by:

* using function calls for Knockout observables to get value instead of the function itself.
* ensuring that `extensions.js` is included by `SpecRunner.html`.
* adding a missing function to `cart.js` ... `contains(sku)`, which was used in tests. _(EDIT: see comment below)_

Recompressed `cart.min.js` (the checked in version was _over 200kb_!).

Fixed logic in `lineTotal()` which was applying the _TOTAL_ line discount `quantity` times, instead of just once, often resulting in negative line item totals. Added tests to illustrate this problem.