[for discussion only] Cart: Item as abstract class instead of interface

This is to allow for a couple of method implementations in that class,
and not have to rely on exposing a util class just to do some simple
item calculations.

I'm really unsure if this is the way to go or not.

Pros:
No need to expose a static utility class that easily can be misused (and also is not very discoverable if you don't know where to look).
Cons:
Introduces some extra work in the dependent repos.
In general I try to avoid inheritence as it risks getting out of hand with unexpected behavior and bloated parent classes.

@softarn and @mikaellothman : thoughts on this?