Black magic

I finally managed to create a reasonable version that uses `black_magic.decorator` to create nice function objects that preserve parameter names and default arguments even on python2.

Possible issues:

- performance possibly goes down by a bit (don't know though)
- usability with non-function callables: The obsub module was never thought to decorate anything other than basic functions, but I am not sure whether it actually worked anyway (2 lazy to try atm). With black_magic this issue is somewhat more contrieved. For some objects it will actually get easier, I believe. For others (like functools.partial) it will not be possible.