Fixed typo + started using functools.wraps decorator

Ironically, I had to wrap functools.wraps, so essentially we end up with a decorator that wraps a wrapped wrapper decorator
Merge pull request #248 from erikbern/functools-cleanup

Fixed typo + started using functools.wraps decorator