fix the potential for unsafe code when running under pyqt

This demonstrates the danger of not have weakref'able object slots:

```python
In [1]: from PyQt4.QtCore import *

In [2]: class Foo(object):
   ...:     __slots__ = ()
   ...:     def foo(self):
   ...:         print 'fired'
   ...:     def __del__(self):
   ...:         print 'collected'
   ...:

In [3]: class Bar(QObject):
   ...:     triggered = pyqtSignal()
   ...:

In [4]: f = Foo()

In [5]: b = Bar()

In [6]: b.triggered.connect(f.foo)

In [7]: b.triggered.emit()
fired

In [8]: del f
collected

In [9]: b.triggered.emit()
fired
```