Enable cyclic garbage collection to EventObservers.

Fixes #2560. Storing callbacks as PyObjects makes them opaque to python so it doesn't detect cycles. We have to explicitly add the callbacks to the python garbage collection visiting path.