Add a simple cache.

A RoundTripper shouldn't intercept the requests for input. What CacheRoundTripper could do is to load and save a token. If there are no tokens initially (e.g. no cache record/file), we should return an explicit error if possible.