! cache: use util.Timestamp is ExpiringLruCache

The breaking changes here are:
  * ExpiringLruCache uses Durations instead of longs for timeouts
  * LruCache.apply doesn't allow Duration.Zero any more but instead Duration.Inf
    for not specifying any timeouts