function Options(style, size, color, parentStyle, parentSize) {
    this.style = style;
    this.color = color;
    this.size = size;

    if (parentStyle === undefined) {
        parentStyle = style;
    }
    this.parentStyle = parentStyle;

    if (parentSize === undefined) {
        parentSize = size;
    }
    this.parentSize = parentSize;
}
This is the main options class. It contains the style, size, and color of the
current parse level. It also contains the style and size of the parent parse
level, so size changes can be handled efficiently.

Each of the `.with*` and `.reset` functions passes its current style and size
as the parentStyle and parentSize of the new options class, so parent
handling is taken care of automatically.