Cache oauth tokens locally and with Memcache.

This is an alternative PR to https://github.com/golang/oauth2/pull/42 which avoids protobufs.
The only concern I have with that is that we currently have a new, valid token that is perfectly fine to cache locally... it doesn't seem right to penalize the current instance if Memcache (or more likely, the AppServer) is having problems at the moment...

I think the worst case scenario if a memcache.Set fails is that the other instances may grab an expired token (locally or from memcache.Get) and will be forced to also call AccessToken themselves.  This is fine, as they would have had to do that anyway, and yet the current instance with a valid token is free to keep running with a valid locally-cached token.