Observing rebuilds
Your store optionally accepts a modelObserver, which lets you visualize rebuilds.
It's rarely used, so feel free to skip this section.
The ModelObserver is an abstract class with an observe method which you can implement to be
notified, by each StoreConnector currently in the widget tree, whenever there is a state change.
You can create your own ModelObserver, but the provided DefaultModelObserver can be used out of
the box to print to the console and do basic testing:
var store = Store<AppState>(
  initialState: state,
  modelObserver: DefaultModelObserver(),  
);
This is an example output to the console, showing how MyWidgetConnector responded to 3 state
changes:
Model D:1 R:1 = Rebuid:true, Connector:MyWidgetConnector, Model:MyViewModel{B}.
Model D:2 R:2 = Rebuid:false, Connector:MyWidgetConnector, Model:MyViewModel{B}.
Model D:3 R:3 = Rebuid:true, Connector:MyWidgetConnector, Model:MyViewModel{C}.
You can see above that the first and third state changes resulted in a rebuild (Rebuid:true), but
the second one did not, probably because the part of the state that changed was not part
of MyViewModel.
This example
also shows the ModelObserver in action.
Note: You must pass debug:this as a StoreConnector constructor parameter, if you want
the ModelObserver to be able to print the StoreConnector type to the output. You can also
override your ViewModel.toString() to print out any extra info you need.
The ModelObserver is also useful when you want to create tests to assert that rebuilds happen
when and only when the appropriate parts of the state change. For an example, see
the 
Model Observer Test.