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 conver all time.Sleep/time.After usages within fleet to use this.