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.
Fix copy_function for pypy

func.__code__, etc is available starting with CPython2.6, but it not on
pypy.