Build will build a string from the cursor. move will be called before
every rune and move can advance the cursor one or more times to ignore
runes. Build will always start from the beginning of the string. This
will not modify the original cursor since it has value receiver.
MoveFunc is called by Build. MoveFunc can advance the cursor one or
more times. Once this function returns Build will start from the current
position and consume one rune and call MoveFunc again.