Refactor data types for time ranges
This introduces two new types to replace KisTimeRange.
KisTimeSpan: a finite, continuous span of time between two frames
KisFrameSet: an arbitrary set of frames, possibly stretching to infinity
This separation makes it explicit whether a range can be discontinuous
or infinite. Many of our current usages only need and support the
continuous, finite case.