Refactor parser

*Refactor HTMLProcessor*

This was done for code clarity and to give `processToken` full access to the tokenizer.

- acceptNode (formerly this.accept) accepts Handlebars AST nodes and is used
to walk the Handlebars AST. It mainly manages the construction of ProgramNodes
in the combined AST.
- acceptToken (formerly processToken) accepts a hybrid of "content"
tokens: all the simple-html-tokenizer tokens, as well as Handlebars blocks
and mustaches. It mainly manages the construction of ElementNodes in the
combined AST.

*Fix mustaches in unquoted attribute values*

*Add some error messages*
- Ensure that programs leave the element stack balanced.
- Ensure that blocks only appear inside elements or other blocks.