Cache the User ID when making a call to the API.

Uses transients to store the user ID based off the key, hashed with a string to make sure we don't run over the 44 character limit on transient names.

Also includes deleting the transients when an api key is revoked.

#2496