Indentation engine based on a state machine. Supports only pushing new chars to the end.
Represents the context for transitions between IndentState. Delegates the responsibility for pushing a new char to the current state and changes between states depending on the pushed chars.