Replace the id<NSCopying> key with an NSUInteger.

We only care that the key is unique.  By making it an NSUInteger
our callers can cast pointers if they want to, but there's no
danger that we'll try and retain the object.