WIP on AST.
Renamed top-level trait Func to Funcs to avoid name collision with Func type. Need a better name in the future.
Misc changes here and there.