Cache oauth tokens locally and with Memcache.

This is an alternative PR to https://github.com/golang/oauth2/pull/42 which avoids protobufs.
This is a little bit racy.

If memcache set fails, we will have a local copy but not a remote one.

On the new instances, the local key won't exist and it will attempt to get it from memcache. If the token on the memcache is a dirty one, it may create some inconsistency.

Maybe we shouldn't ignore the memcache set error, and set the local cache if it succeeds.