Added additional methods for introspection

* Added lookup and lookup_explicit, to get the function that *would* be called
with the given arguments.
* Moved function lookup logic to _lookup_internal, and based execute on it.
* added .lookup attribute to decorated function.
* Added .func attribute to decorated functions, to get the original wrapped function.
* Added unit tests for the new lookup methods.
* Added unit test for the (self, *args, **kwargs) bug, in which self as a kwarg
wasn't being forwarded properly.