function Options(data) {
    this.style = data.style;
    this.color = data.color;
    this.size = data.size;
    this.phantom = data.phantom;
    this.font = data.font;

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

    if (data.parentSize === undefined) {
        this.parentSize = data.size;
    } else {
        this.parentSize = data.parentSize;
    }
}
This is the main options class. It contains the style, size, color, and font
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.