pep8: rm trailing whitespace
use caps for token name in lexer rule
swap `=` and `==` in token rule regexp for precedence reasons

because otherwise `==` is shadowed by `=` and tokenized into two `=`.
add lexer rule for single-line comments starting with `#`

also bug fix: newline comment was missing from list of tokens, nonetheless lex still worked w/o complaints.
add token and parser rule for prime as postfix operator for "next"

with higher precedence than arithmetic operators, similarly to gr1c:
    https://github.com/slivingston/gr1c/blob/cecb4db383ea9e94149eeb0a3d5fd2b89ffc62d5/src/gr1c_parse.y#L75
add associativity to binary arithmetic operators
give higher precedence to next operator than to arithmetic operators
replace warnings.warn with print in parser error rule

to ensure that all the warnings are visible, even after repeated calls (otherwise the warning appears only once in ipython).
handle singleton domains when converting jtlv output to graph

because slugs.compiler.convert_to_slugsin drops variables with singleton domains. So these variables will be missing from the variable valuations of the synthesized strategy, not because of a bug in slugs, but because they can only take a fixed value.
don't forward options to slugs

because some options require additional file i/o, so they need dedicated code. So as they each gets implemented, a corresponding arg will be added to synthesize, or if justified, more functions than `synthesize` will be added.
simplify by using a single flattener method for Bool AST node
bugfix: add missing `!=` operator to GR1C and SPIN token maps
add slugs flattener to AST

because slugs recognizes only capitalized literals for Boolean constants. In the future, the flatteners should be separated from the core AST classes, as extensions, in order to avoid spec.ast and spec.form to become god objects. Chaining the language transformations, instead of integrating them into single modules will be more robust and easier to debug.