Imitate instance methods

Except for the .connect/.disconnect methods the returned objects are
made indistinguishable from normal instance methods. This means that the
instance can be seen from the bound method, etc.

Furthermore, there should be a noticeable performance benefit when
compared to the naive black-magic implementation.