add Clock interface and fakeClock for time testing

@bcwaldon this is what I was talking about ages ago but never got around to. Ultimately we would convert all time.Sleep/time.After usages within fleet to use this.