Add some basic tests for list ASTification (mostly for empty lists)
Avoid crash
Handle do{} blocks in a top level StatementSequence

It just special-cases some null ops as viable root ops.
Fix handling of empty bare blocks
Try to simplify nested empty blocks into a single empty AST node

Not really necessary, but there is no point in closely mirroring
the AST structure for useless (or optimized-out) code.