Make sure we start from the actual @model passed in to the KeypathObserver.
Update KeypathObserver to have better state management, passing in the previous target to the callback for unbinding.
Update Rivets.Binding::setObserver to work with the new KeypathObserver implementation.
Utilize a KeypathObserver for subscribing to dependencies so that all intermediary keys are observed and re-realized as they change.