The ShapingQueue is responsible for shaping text during inline formatting context
construction. It allows for shaping text across inline box boundaries. When pushing
items to the queue, if the items are compatible pieces of text that can be shaped
together, they are accumulated. The queue may be flushed in the given situations:
An entry on the shaping queue that represents text that needs to be shaped.
This contains a lot of duplicated data from TextRunSegment so that
it can outlive a mutable borrow on the owning TextRun.