A tooling-focused alternative to the AST. This commit focuses on the
memory-management strategy and the structure of the AST.
More to follow later:
- Operations to mutate the syntax trees and corresponding textual replacements.
- Mapping between clang AST nodes and syntax tree nodes.
- More node types corresponding to the language constructs.