+ util: add a (private) Timestamp class based on System.nanoTime() for unit-safe checking for timeouts
! can, io: use util.Timestamp instead of longs for timeout checking

The breaking part is that ConnectionTimeouts pipeline stage will now
reset the timeout when it receives an `SetIdleTimeout` message.
! cache: use util.Timestamp in 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