Simpler and more powerful decorator

See #48 for all the gory details.
Re: introspection: So, sometimes when I try to look at the decorated function, I see that its an instance of `instancemethod` which doesn't have a `__name__` (it has `__func__.__name__`) and sometimes (in the REPL) I get that its a `function`. I feel like there's something I'm not clearly understanding here.