Use an overridable abstraction for Time instead of DateTime.UtcNow

See #1351 for initial discussion.