Parse N/X and X,Y,Z forms, fix passing strings around

- regarding the strings, previously we'd take the buffer pointer from
  lexer and converted numbers (etc.) from that point on.  Whatever
  followed the original token was considered as well.  Now we pass
  back the buffer pointer as well as a length.