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.
I agree... in my experiments, I used local caching + memcache, which had the highest performance.
But I think it is critical that we also add local caching even if we decide to add in memcache, as this will give the best performance for the customers.  The local storage required is tiny, so memory is not an issue for local caching.