* Upgrade to pkg:provider 4.0
* Follow best practice of ProxyProvider updating
The addresses feedback from https://github.com/flutter/samples/issues/245. Instead of constructing a new `CartModel`, we merely update the `catalog` field.
We no longer need a fancy constructor, and `CartModel._catalog` cannot be final any more.