[FIX] Detect source module and apply it to four functions/methods

This adds usecases and doesn't rely on __self__ anymore. With Python 3
an unbound method (which is usually used) doesn't has a __self__
attribute because it's handled like a function. So the class now must be
supplied manually and using __self__ is removed, because it's value is
already supplied.

This makes redirect_func also compatible with classmethods by getting
rid of the wrapper class, which replaced the 'self' parameter and the
new method was called like a function.

Change-Id: I9155163bb0d89707dbfa7c393ab63be56e2f616a
Merge "[FIX] Detect source module and apply it to four functions/methods"