Make sure that undelivereds do not overlap

This PR adjusts settingsutil to ensure that there is no overlap in actual or undelivered streams for the basal segments.

It does it by introducing a "Timeline" data structure that knows how to add things to itself such that it will maintain time ordering as well as handle overlap.  settingsutil then delegates to a number of Timeline objects to do its thing.

All tests currently pass, but the example visualization doesn't actually work.  I do not know why.