Hand off an AST to babel instead of string
Currently we are doing a codegen of the expanded AST before invoking babel. This is obviously sub-ideal since babel now has to do a bunch of parsing when it just needs to run transformations over an AST.
Babel has a transformFromAst
function we can call but it only works over their AST, a modified variant of ESTree, and we are emitting a shift ast. The shift project includes a shift-to-estree converter which will probably get us most of the way there. May need a few changes to handle babel specific differences.