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