Revive bound_event as a class

The previous approach was returning a new copy of a function from
`event.__get__` each time. Since function comparison is done by identity
this breaks code like `.connect(a.foo)` followed by `.disconnect(a.foo)`
(assuming `a.foo` is an event).

Furthermore, in python it is not possible to overload equality of
functions (it is not possible to derive from FunctionType/MethodType).
Therefore, the only possibility I can see to get the desired behaviour,
is to revert back to a bound_event class.
Move __get__ to bound_event class

To enable later access of __get__ like in:

    - foo.bar.__get__(...)
    - Foo.bar.__get__(foo)
Make wraps() injectable

This is more flexible than a boolean option _decorate=True.