Complete rewrite that works much more simply, automatically destroys the binding when the bound-to object deallocates, and allows the controller to unbind.