String hygiene

I don't see why OptionSet is the obvious or natural model here. What does the raw value mean and why should it be a bitset? Why would you ever initialise this from the raw value? If you think this needs to be a set then just use Set<TrimEnd> where TrimEnd is an enum with .start and .end cases. I personally don't see the advantage of it being a set at all though, because it's unlikely that you're going to use set operations on it, the empty set doesn't really make any sense, etc. The three-valued enum in the proposal seems much more natural.