Grid: fix some bugs, I think, in expiry/update bookkeeping.
Rework clock synchronization logic.

Clock now drifts gradually towards local time, but will happily accept
an offset based off the of the maximum stream time, regardless of
whether that time is in the past or future.