util: ensure IdeWidgetContextHandler is emitted only once per change
It was possible previously that we could notify multiple times for the same IdeContext. This stashes a pointer (only for comparison) in quark data like we do with our handler. It then only notifies when that has changed. Additionally, we move to using the Quark API instead of the string-based API.