Implement symbolic constants

Symbolic constants like icmp-echoreply et al are not currently supported, and should be implemented.

Note that there are two kinds of symbolic constant, AIUI: symbolic constants in arithmetic expressions, where they just evaluate to a value, and symbolic constants in logical operators, e.g. port http.  Perhaps symbolic constants are only valid in some operators (like "port").  Some investigation is needed.
this should be lexer.error() once the lexer error patch lands