static getDerivedStateFromProps(props, state) {
      return { version: state.version + 1 };
    }
Consumers need to differentiate between updates coming
through Context, and updates triggered by a parent re-rendering.

In the case of a Context update, we want to avoid re-rendering the Consumer
unless state has changed.

In the case of a parent re-rendering, we want to ere on the side of caution
and render the Consumer again, just in case it's also using values from props.

In order to accomplish this we use gDSFP to track an integer which represents the
"version" of the Consumer. gDSFP won't be called for a Context update, so if
the version changes we know that the parent has re-rendered.