Track current position in the 'tokens' function

Example

Before:

  Prelude Text.Parsec> parseTest (string "abcd") "abbe"
  parse error at (line 1, column 1):
  unexpected "b"
  expecting "abcd"

After:

  *Main> parseTest (string "abcd") "abbe"
  parse error at (line 1, column 3):
  unexpected "b"
  expecting "cd"

Before this patch, 'b' was reported to be found at 1:1, which is clearly not the
case. After this patch, we correctly report the location of the wrong token, and
also report missing tokens starting from that position.