Cart: Support empty carts.

To simplify the usage of a cart, we need to support empty carts. This is
for instance used for reports that can be empty.

Ping @adamvoncorswant @softarn 
The method will return a typed list while the field returns an "old style" list. Just googled around a bit, this link explains it better:
http://stackoverflow.com/questions/14870819/what-is-the-difference-between-collections-emptylist-and-collections-empty-lis