Actually let's remove the getter and setter for the `cursor` and add this:

    type Mark = Int
    def mark: Mark = _cursor
    def reset(mark: Mark): Unit = _cursor = mark

It looks the same but has slightly different semantics. The user of these methods doesn't need to know what exactly a `Mark` is. All she needs is to be able to reset the parser state to a previously taken marker. This will allow us to include more things into the resetting process than only the cursor.