Cart: Use interfaces instead of abstract classes.

This changes Item to be an interface instead of abstract class.

NOTE: This also changes the meaning of gross value on an ItemLine.
It will now be the price before any kind of discount to be consistent
with the rest of the library.

Ping @softarn @adamvoncorswant