WIP: lexer: introduce StateFn, Accept()/AcceptAll() and Position to aid parsing #3

Closed
amery wants to merge 3 commits from pr-amery-lexer into main