Updated cart model (should this be here, it feels like a job for
the controller) to include a smart add to cart function.