I started to comment on individual functions, but ultimately I don't agree with most of the changes in this file.

1. We should not modify the `clockStep` property inside of `tick`, it should always be what the user sets it to be.
2. `isSystemTimeAvailable` does not belong at this level.
3. `_isOutOfRange` can't really be cached because it's dependent on the current clock settings.
4. I'm not sure I understand the reasoning behind modifying the `ClockStep` enums as well, the two we had covered all use cases.

I'm inclined to say lets revert this whole file and move needed functionality up to the AnimationController, but there's also stuff in the AnimationController that may not belong there either.  I still need to think about it some more.