make ParseError a class
remove nextPosition and nextChar()
remove previousPosition and previousChar()
rename TextPosition -> Cursor
fix bug