A helper class to allow us to hook up Niagara view model types with the source models that they are currently observing. The assumption is that a ViewModel class will register and unregister the correct the model during its lifetime. Since it is possible that the ViewModel will hold onto the Model with a weak object pointer, we keep track of the registered pair using a separate data structure (akaHandle). You can only unregister with a valid handle. It is possible for a Model to be pointed to by multiple simultaneous ViewModels (like say event handler scripts). If this happens, you can query the additional ViewModels in the GetExistingViewModelForObject method.