Simpler and more powerful decorator

See #48 for all the gory details.
No, `key` has to be something. I'm loathe to make it have a default of `'ip'` (which I think would be the only logical default) given the inherent problems with `REMOTE_ADDR`. It could raise `ImproperlyConfigured` if `key is None`.