Called when the reference changes so subclasses can refresh any live listeners.
The base implementation does nothing. Subclasses such as LocalizedString and LocalizedAsset<T0> override this to re-resolve the value and push it to their change events. It runs whenever a property setter on the reference assigns a new value.