Segment Collection

This once again uses a VO instead of a native datastructure to enforce
validation rules. In this case the most important is making sure the
segments are contiguous, so that we always know we're working with a
valid road segment.