Fluent AST builder interface

mostly for tests, but might be useful later in implementation
Clean up fluent node builder to not leak implementation details
update tests to use fluent ast builder