I don't want to assume that `instance` is an XBlock - this could have a side effect of breaking other things.

The reason I add in `self._model_data_cache` in `XBlock.__init__` here is because `_get_fields_to_save` accesses it without checking if it's present, and it made sense to just force it to be present on an XBlock.