Warning fixes.
Convert AST classes to C++, and make the value union unnamed for ease of wrapping.
Start adding an XS wrapper for the AST classes.