Purify: remove lexer from Engine
Engine: Add step-by-step execution interface
Settings: add --stepwise flag
EngineTypes: split definition of step-by-step ENGINE
Interface/TableBackend: generate stepwise engine
Interface: Generate type for semantic values and non-terminals

Split interface into preInterface (before infer) and interface to add
type for nonterminals.
Add --typed-values flag in Settings to control generation of semantic
values.
Printer: add proper support for GADT
Interface: generate symbol gadt for typed-values
Expose new typedefs in backend-generated implementations
TableBackend: generate typed code
Introduce typed semantic values in engine

Expose definitions in generated interface and implementation.
Define semantic_value and Accept in TableFormat.
Generate entry points for stepwise engine.
Tweaking stepwise interface
Change representation of symbol GADT
TableBackend: generate separate module for table
Generate Query module
Interface: expose state type