Simpler and more powerful decorator

See #48 for all the gory details.
If `key` is None (which is the default), then it's not callable and it's not in `_SIMPLE_KEYS`. So then I think it hits this line and fails. (Unless I'm misreading things, but it sure seems like it's None by default everywhere.)

Is there a use case for having key = None?