avoid using a character as an index
add OrdinalRange type

this allows constructing ranges of things that form an ordered set but
aren't necessarily numbers.