Fix descriptor semantics

- semantics of bound method calls are fixed: storing a reference to a bound instance  method (`f = a.method`) should keep the instance alive
- support class based access to decorated event-methods, like `A.method(instance, *args)`
- does not require the `weakref` module anymore
- use `functools` to copy attributes to wrapper. This will lead to better `help()`.