Locally cache oauth tokens.

This change is for both App Engine and Managed VMs so that these apps can scale without running into the app_identity_service quota limit due to calling appengine.AccessToken too frequently.  An added benefit of caching is that calls to Google APIs will be significantly sped up due to removing the round-trip calls to the api_identity_service.
Sorry, I missed the look up on the line 74.

What's the overhead if we don't have a local map? If it's 10-20 milliseconds, maybe we shouldn't care about the local map.