Time Span

This gem is composed of 3 classes:

A RelativeTime has an associate Ruby Object (of any class), which should '#respondto?(:tos)'

A RelativeTime can occur with more than one TimeSpan, so must also keep track of the TimeLine to TimeSpan relationship.

Comparisons of any kind only make sense within a given TimeLine.

TimeSpans are automatically attached to a TimeLine, but RelativeTimes are not.

TimeLines are the only structure with even a moderate data complexity. There is is a hash which keeps the relative position for each RelativeTime. This structure allows more than one RelativeTime to be equal compared to other RelativeTimes.

For now, clone is disallowed, it could create an object not obeying the rules, such as a RelativeTime pointing to TimeLine not its own.