Revert "Replace the id<NSCopying> key with an NSUInteger."

This was a mistake, because the common external use is passing
in an NSString.  Passing a cast pointer to that string means
that the operations don't compare correctly.  In other words,
this change traded performance (not copying the string) for
correctness.

This reverts commit 24664cc6c16ab5e00baf90cacacdfba9f5582e1a.