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.
Add AttrNode
Preserve AST during hydration compiler
Add TextNode
Use type instead of instanceof
Merge pull request #18 from mmun/ast-sync

Use Handlebars AST nodes