Simpler and more powerful decorator

See #48 for all the gory details.
I would definitely make it raise `ImproperlyConfigured` before this point if it's None. Further, I'd fix the documentation so that it doesn't suggest the default is `None` but rather says it must be set.