Code of other files depends on `headline1`, but there's only `headline2` defined in the **theme.dart** file.
This was a regression introduced with #432.
* 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.