Use Handlebars AST nodes

Reuse existing Handlebars AST nodes to improve compatibility.

Children of block/element nodes are now wrapped in a ProgramNode.

Rename HTMLElement to ElementNode.