Flatten various literal expr types into one.

The parser and AST no longer care about Alamatic types, and work only in
native Python types. The preprocessor is responsible for discerning what
types these literals ought to have as part of the type inference process.
Support boolean and null literals.

These are handled as exceptions to symbol parsing, and so this prohibits
the use of "true", "false" and "null" as variable names.