/// A trait for providing custom time providers. `TimeProvider`s are used to
/// specify where the source of DateTimes used by the scheduler. For most
/// purposes, the default `ChronoTimeProvider` is sufficient; the main
/// use case for custom `TimeProvider`s is for writing tests.