lexer: add `scan_ident`, scan identifiers