Base class for an expression within an abstract syntax tree. The base implements parent / child relationships as well as a simple typing system. An expression is a multi child / multi parent element of a directed tree (there can be no cycles). Expressions can only be constructed by an AST parser, and are also memory-owned by the parser.