Refactor stimuli-response interface

This new refactoring increases the precision of the specification by
avoiding abstractions that were hiding important details, while still
remaining very abstract. It also allows for the entire compiler to be
specified in a single enumeration, together with the Tokenizer, Parser,
and other components.