Change CacheTimeout to be time.Duration

May as well make it obvious, this also makes the various calculations easier to
understand.